- ベストアンサー
.jpg .gif 等の画像ファイルの読み込み方について
Win32上で圧縮形式の画像データを読み込む方法を御存知の方いらっしゃいますか? 無知なもので、bmp形式のイメージ読み込みしかできないんです。LoadImage関数みたいに一発で読める関数があればラクですけど、面倒な方法でも構わないので知ってる人いたらお願いします。
- fatal-crisis
- お礼率62% (5/8)
- C・C++・C#
- 回答数4
- ありがとう数9
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでしょうか?>参考URL もしくは http://www.k-work.co.jp/jpegbook.html http://www.intel.co.jp/jp/developer/support/performancetools/libraries/ijl/index.htm この辺をあたってみたらいかがでしょう? 最近は JPEG-2000 という新しいフォーマットもできつつあるようですね。現行のフォーマットとの互換性は無いらしいですが、今まで以上に圧縮が可能で、かつ画質は良い、理論上ブロックノイズは出ないというかなり期待のものです。 GIFは個人でやるのは「もう」やめた方が良いですね。
その他の回答 (3)
- KOH_da
- ベストアンサー率31% (161/506)
画像ビュアでSUSIEという有名ソフトがあります。 このソフトは画像ローダなどをプラグインとして実装しています。 このプラグインを使ってロードしてはいかがでしょうか。 そのようなソフトは世間にたくさん存在しています。 まずSUSIEのサイトを検索して、そこのリンクをたどると、 プラグインを利用するサンプルがあります。 たぶん、カナさんという方へのリンクだと思います。 手がかりにはなるでしょう。 ちなみにSUSIEも以前はGIFに対応していました。 そのため古い付録CDを探せば、 GIFのプラグインも収録されていると思います。 なお、プラグインはVCからでもVBからでも使えます。
お礼
ありがとうございます、早速情報を参考に検索してみますね(笑)
補足
しかしど~にも、自分でコード構築しないと納得いきそうになかったりする(爆) ヘンなとこで自力本願(?)だな‥‥ そんわけで そっちの手法わかる人、切にお願いします。
- hyde-la
- ベストアンサー率28% (42/146)
ああ、言い忘れましたがGIFはダメです。 GIFは特許上の問題で、ただでは使えなくなっています。
- hyde-la
- ベストアンサー率28% (42/146)
基本的にはWin32APIに用意されてるものではないです。 ですから自分でデコードルーチンを書かないとなりません。 楽するなら、DLLを使えばいいと思います。 フリーのものでは、下記Vectorのサイトなど探せばあるでしょう。 最近はブラウザなどで当たり前にJPEGやGIFの表示が出来ますので 多分Windowsにも標準のDLLがあると思いますけど、 手もとのMSDN検索したらCD入れろと言われて探すのが 面倒なので、どうぞやってみてください(笑 DLLでも面倒なら、COMオブジェクトを使うって手もあります。
お礼
回答ありがとうございます。 ええと、自分はVC++使ってるんでVBのコードだと 無理かも知れないです(汗) 一応VectorからDLLをDL しましたが、TransG32は既にマシンに入ってました。 デコードルーチン書きたいけど手法がどうにもわからんです。 コードでカバーするくらいは然程手間とも思わないんで、 関連書籍や何かあったら教えていただけませんか? それとCのソースで参照できるのがあったらメールに 添付で送ってもらえると非常に助かります。 他力本願だな~(笑) ヘボい質問ですまんです。ファイルの仕様って知らない事多くて‥‥まだまだお勉強せないかんですな。
関連するQ&A
- gifとjpgについて
bmp形式の画像を圧縮するときどのような画像の場合にgifかjpgのどちらの 形式にすればよりサイズを小さく出来るのですか? それぞれの形式にどのような特徴があるのかも一緒に教えてください。
- ベストアンサー
- その他(カメラ・ビデオカメラ)
- 画像ファイル形式
次の画像ファイル形式で、データが圧縮されているものは、どれですか。 PICT, JPEG, BMP, RAW ご存知の方、宜しくお願い致します。
- ベストアンサー
- その他([技術者向] コンピューター)
- gif画像をそのままjpg画像にしたい
gif形式の画像をjpg形式にしたいのですが、Windowsのペイント等で変更すると輪郭がにじんだようになります。 jpg形式は圧縮するので仕方ないという認識はあるのですが、にじまないようにjpg形式にしたいです。 何か方法はありますか?お願いします。
- 締切済み
- 画像・動画・音楽編集
- jpgファイルはphotshopなくても開きますか?
フォトショップで加工した写真データをjpgで保存して、 それをCD-Rに入れて配布する作業をしているのですが、 ふとPhotshopを持ってない人も画像を開くことができるのかな? と思い質問させていただきました。 winだとBMP形式が基本と聞いたことがあるので、BMP形式にした方が いいのでしょうか? その場合MACでPhotshopを持っていない人がいた場合開くことは できますでしょうか? 通常のjpg形式ではなくweb用に保存するというところからのjpgの方が いいのでしょうか? ご存知の方おられましたら、お手数おかけしますが教えてください。 よろしくお願いいたします。
- ベストアンサー
- グラフィックソフト
- GIFやJPGの画像が保存できない
WEBサイトのGIFやJPG画像を保存しようとしても、BMPになってしまいます。 その画像のプロパティを見ると、種類が使用不可になっています。全てがそうなるのではなく、ちゃんと表示されている物もあります。 OSはWIN2000です。動く画像のGIFを保存したい時に、出来ないので困っています。解決方法がありましたら、よろしくお願いします。
- ベストアンサー
- Windows NT・2000
- 画像ファイルの種類
画像ファイルにはJPG、BMP、PNG、TIF、GIFなどがありますが、具体的にはどのような特徴と違いがあるのでしょうか? TIFは非圧縮ファイルで、JPGやBMPなどは圧縮ファイルと聞きますが、どういう風に圧縮形式が異なり、それぞれどのような画像に適しているのか、どれが重くて軽いのか、など、素人に分かる程度に教えていただけないでしょうか。 よろしくお願い致します。
- ベストアンサー
- その他(カメラ・ビデオカメラ)
- BASICで画像のx,y座標の取得方法について
Active Basicでプログラムを書いています。 今、簡単なゲームを作ってみようと思い、プログラムを書いているのですが、画像の座標の取得の部分で躓いてしました。 画像Aに画像Bが触れたときに『アウト』とメッセージを出す、簡単な、物を避けるゲームなのですが、グローバルで、 Dim BombRect As RECT Dim HitoRect As RECT を定義して、画像が重なったかどうかを判定するときに、 GetWindowRect(hBmp04,BombRect) GetWindowRect(hBmp01,HitoRect) で、読み込もうとしましたが、座標が格納されてくれません。 hBmp01とhBmp04には、下のようにして画像を読み込みました。 'グローバル Dim hBmp01 As HWND Dim hBmp02 As HWND Dim hBmp03 As HWND Dim hBmp04 As HWND 'ウインドウ作成時 hBmp01 = LoadImage(0,".\画像\人\普通.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) hBmp02 = LoadImage(0,".\画像\人\右.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) hBmp03 = LoadImage(0,".\画像\人\左.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) hBmp04 = LoadImage(0,".\画像\爆弾\ボム.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE) もし、やり方をご存知の方がいらっしゃいましたら、すみませんが、ご教授お願いします。 また、もっと簡単な方法がありましたら、そちらも教えていただけると嬉しいです。
- ベストアンサー
- その他(プログラミング・開発)
- bmp形式&gif形式の画像が見れません。
あるサイトで画像を保存しようとしましたら、bmp形式とgif形式でしか保存できません。bmp形式で画像を保存してマイピクチャで画像を開こうとしましたら、保存したはずの画像が真っ白になってしまい見ることが出来ません。どうしたら見ることが出来ますか?gif形式で画像を保存しても真っ白になってしまいます。何方かご解決方法を教えて下さい。宜しくお願いします。
- ベストアンサー
- Windows XP
- imgctl.dllを使って読み込んだ画像ファイルをTransparentBltで画く方法
今、LoadImage()で読み込んだBMP画像を BitBlt(hdc,x,y,dx,dy, hMin,0,0,SRCCOPY));や TransparentBlt(hdc,x,y,dx,dy, hMin,0,0,dx,dy,RGB(r,g,b)); で画面に書くCプログラムがあります。このプログラムをBMP画像だけでなくPNG画像も扱えるように拡張しています。いろいろと調べた結果PNG画像を読み込むためにライブラリimgctl.dllを使うプログラムに変更している途中です。しかし、imgctl.dllではLoadImage()の代わりにToDIB()関数で読み込むため、JPEG画像もPNG画像も読めるのですが、独自のDIBデータハンドル(HDIB)で管理するためHDC(デバイスコンテクストハンドル)が取得できません。そのため、 問題1、画面書き出しはBitBlt()が使えない。 問題2、TransparentBlt()関数が使えない。 という問題があります。 問題1は、DIBtoDC()で代用することで、解決しましたが、問題2が未解決です。 お知恵をお貸しください。 たとえば、HDIBからHDCを得る方法、あるいは、特定の色RGB(r,g,b)を透明として扱うTransparentBlt()関数に代わるHDIBを使った関数をお教えいただければうれしいです。
- ベストアンサー
- C・C++・C#
お礼
おおおぉぉ!! 教えて頂いたULR、私の要望にズバッとはまっております。感謝!! 書籍については 必ずや購入しようかと。 なにしろ画像ファイル内部の構造に関する知識が 少ない少ない(BMP形式しか知らない‥‥) その手法を実際に使うかどうかは、まだ怪しいん ですけど 貪欲に覚えにゃならないことが多いので。 非常に助かります ありがとうございました。