• ベストアンサー
  • 暇なときにでも

.jpg .gif 等の画像ファイルの読み込み方について

Win32上で圧縮形式の画像データを読み込む方法を御存知の方いらっしゃいますか? 無知なもので、bmp形式のイメージ読み込みしかできないんです。LoadImage関数みたいに一発で読める関数があればラクですけど、面倒な方法でも構わないので知ってる人いたらお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数872
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.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は個人でやるのは「もう」やめた方が良いですね。

参考URL:
http://www.sfc.keio.ac.jp/~akimichi/computer/jpeg/

共感・感謝の気持ちを伝えよう!

質問者からのお礼

おおおぉぉ!! 教えて頂いたULR、私の要望にズバッとはまっております。感謝!! 書籍については 必ずや購入しようかと。 なにしろ画像ファイル内部の構造に関する知識が 少ない少ない(BMP形式しか知らない‥‥) その手法を実際に使うかどうかは、まだ怪しいん ですけど 貪欲に覚えにゃならないことが多いので。 非常に助かります ありがとうございました。

関連するQ&A

  • gifとjpgについて

    bmp形式の画像を圧縮するときどのような画像の場合にgifかjpgのどちらの 形式にすればよりサイズを小さく出来るのですか? それぞれの形式にどのような特徴があるのかも一緒に教えてください。

  • 画像ファイル形式

    次の画像ファイル形式で、データが圧縮されているものは、どれですか。 PICT, JPEG, BMP, RAW ご存知の方、宜しくお願い致します。

  • 画像ファイルの種類

    画像ファイルにはJPG、BMP、PNG、TIF、GIFなどがありますが、具体的にはどのような特徴と違いがあるのでしょうか? TIFは非圧縮ファイルで、JPGやBMPなどは圧縮ファイルと聞きますが、どういう風に圧縮形式が異なり、それぞれどのような画像に適しているのか、どれが重くて軽いのか、など、素人に分かる程度に教えていただけないでしょうか。 よろしくお願い致します。

その他の回答 (3)

  • 回答No.3
  • KOH_da
  • ベストアンサー率31% (161/506)

画像ビュアでSUSIEという有名ソフトがあります。 このソフトは画像ローダなどをプラグインとして実装しています。 このプラグインを使ってロードしてはいかがでしょうか。 そのようなソフトは世間にたくさん存在しています。 まずSUSIEのサイトを検索して、そこのリンクをたどると、 プラグインを利用するサンプルがあります。 たぶん、カナさんという方へのリンクだと思います。 手がかりにはなるでしょう。 ちなみにSUSIEも以前はGIFに対応していました。 そのため古い付録CDを探せば、 GIFのプラグインも収録されていると思います。 なお、プラグインはVCからでもVBからでも使えます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます、早速情報を参考に検索してみますね(笑)

質問者からの補足

しかしど~にも、自分でコード構築しないと納得いきそうになかったりする(爆) ヘンなとこで自力本願(?)だな‥‥ そんわけで そっちの手法わかる人、切にお願いします。

  • 回答No.2
  • hyde-la
  • ベストアンサー率28% (42/146)

ああ、言い忘れましたがGIFはダメです。 GIFは特許上の問題で、ただでは使えなくなっています。

共感・感謝の気持ちを伝えよう!

  • 回答No.1
  • hyde-la
  • ベストアンサー率28% (42/146)

基本的にはWin32APIに用意されてるものではないです。 ですから自分でデコードルーチンを書かないとなりません。 楽するなら、DLLを使えばいいと思います。 フリーのものでは、下記Vectorのサイトなど探せばあるでしょう。 最近はブラウザなどで当たり前にJPEGやGIFの表示が出来ますので 多分Windowsにも標準のDLLがあると思いますけど、 手もとのMSDN検索したらCD入れろと言われて探すのが 面倒なので、どうぞやってみてください(笑 DLLでも面倒なら、COMオブジェクトを使うって手もあります。

参考URL:
http://www.vector.co.jp/soft/win95/prog/se148530.html

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答ありがとうございます。 ええと、自分はVC++使ってるんでVBのコードだと 無理かも知れないです(汗) 一応VectorからDLLをDL しましたが、TransG32は既にマシンに入ってました。 デコードルーチン書きたいけど手法がどうにもわからんです。 コードでカバーするくらいは然程手間とも思わないんで、 関連書籍や何かあったら教えていただけませんか? それとCのソースで参照できるのがあったらメールに 添付で送ってもらえると非常に助かります。 他力本願だな~(笑) ヘボい質問ですまんです。ファイルの仕様って知らない事多くて‥‥まだまだお勉強せないかんですな。

関連するQ&A

  • 画像ファイルを2進数で表したい(C#)

    PGMでもBMPでもどの画像形式でもかまわないのですが、 画像を2進数で表したいです。 画像は、白と黒のみを使います。 □□□■■□□□ □□■□□■□□ □□■□□■□□ □□■■■■□□ □□■□□■□□ □□■□□■□□ こういう画像データを読み込んだ場合、 00011000 00100100 00100100 00111100 00100100 00100100 このように表示するプログラムを組みたいと考えています。 画像データを文字に変換する方法が良く分かりません。 初心者向けに、教えていただけると有難いです。 回答よろしくお願いします。

  • 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を使った関数をお教えいただければうれしいです。

  • 画像ファイルの圧縮

    あるテキストで、 ....上記で、BMP以外の形式はデータ容量を小さくするために圧縮ができる形式であり、そのうち、Tiff GIF PNG は一度圧縮しても元に戻すことができる可逆圧縮方式ですが、JPEGは一度圧縮すると元に度せない、非可逆圧縮方式です。 ---------------------- という説明がありました。 ここでの圧縮というのは、zipなどのことを言っているのではないと思うのですが、そうすると、 画像処理ソフトで、そのファイルを開き、保存(変換)する際に、何段階か、品質と、容量のサイズの小ささのトレードオフで、選べたりすると思います。 可逆というのは、その際に、サイズを例えば小さくして保存して、またあとで開きなおして高品質な容量の大きなファイルにすることもできる、といったことを意味しているのでしょうか。それはそれで信じにくいのですが。

  • bmp形式&gif形式の画像が見れません。

    あるサイトで画像を保存しようとしましたら、bmp形式とgif形式でしか保存できません。bmp形式で画像を保存してマイピクチャで画像を開こうとしましたら、保存したはずの画像が真っ白になってしまい見ることが出来ません。どうしたら見ることが出来ますか?gif形式で画像を保存しても真っ白になってしまいます。何方かご解決方法を教えて下さい。宜しくお願いします。

  • jpeg非可逆圧縮、gif, png 可逆圧縮

    jpegが非可逆圧縮、gif, png が可逆圧縮という場合、何を意味しているのでしょうか。 圧縮しない、bmpなどのファイルを、画像ソフトで開いて、jpeg やpng などの形式で保存したとします。 圧縮され、容量は小さくなります。 そのファイルを、また画像ソフトで開きます。 可逆圧縮のpngは、bmpであったときと同質の表現がされるのでしょうか。 非可逆圧縮のjpgは、少し落ちた画質で、再現されるのでしょうか。 可逆、非可逆とは、そういったことを言っているのでしょうか、それともまた別のことを指しているのでしょうか。

  • BMP画像ファイルの読み書き

    Visual StudioのC言語により、ビットマップ形式の画像に対するプログラミングで 簡単な背景差分のプログラムを作成しています。 背景画像と対象画像2枚を読み込み色の差を取り、 差の値が背景の値と近ければ背景とみなし白で塗りつぶし、 物体だけを表示した画像を生成するようなプログラムです。 1枚のみの画像は以下のプログラムで作動しますが、連続した画像(01.bmp 02.bmp ・・・・100.bmp) を読み込み上記の処理をする場合にはどうすればよいのでしょうか? 分かりにくくて申し訳ないですが、よろしくお願いします。 #include "BMPData.h" #include <math.h> int main(){ int a=150; int i,j; int r,g,b; int ir,ig,ib; int diff; BMPStruct bmp_bg; BMPStruct bmp_oj; BMPStruct bmp; RGB rgb_bg; RGB rgb_oj; RGB rgb; RGB rgb_w; rgb.r = 255; rgb.g = 255; rgb.b = 255; rgb_w.r = 0; rgb_w.g = 0; rgb_w.b = 0; readBMP(&bmp_bg, "back.bmp"); //背景画像の読み込み readBMP(&bmp_oj, "01.bmp"); //対象画像の読み込み makeBMP(&bmp,640, 480, rgb); //出力用画像を生成する for(i=0; i<640; i++){ for(j=0; j<480; j++){ getColor(bmp_bg, &rgb_bg,i,j);  //背景画像の色を取得 getColor(bmp_oj, &rgb_oj,i,j);  //対象画像の色を取得 //rgbそれぞれの値の差 r = rgb_bg.r - rgb_oj.r; g = rgb_bg.g - rgb_oj.g; b = rgb_bg.b - rgb_oj.b; //絶対値 ir = abs(r); ig = abs(g); ib = abs(b); //色の差 diff = ir + ig + ib; //背景かどうかの判定 if(diff>a){ putColor(bmp, rgb_w, i, j); //色の差が大きければ出力画像に対象画像の色をそのまま出力 } else{ putColor(bmp, rgb, i, j); //色の差が小さければ白を出力 } } } writeBMP(bmp, "image01.bmp"); }

  • 画像ファイルを元の形式にもどしたい

    デジカメで取った画像データ約50枚をeメール添付しようとしてリサイズ変換を行いましたが、誤って元のデータに上書きしてしましました。 写真としては使えないほど荒いデータになってしましました。 元のデータに復元したいのですがどうすれば可能でしょうか? 大事な写真データ50枚なので困っています。ご指導お願いします。 データ:3メガ/枚 で50枚を12k/枚のbmp形式へ ソフト:vixというソフトで総合変換でリサイズしてしましました。

  • 画像ファイルを開くとき

    MEのパソコンで画像ファイルを開くとき、最初はBMPだとペイント、JPEGなどだとInternet Explorerで開いてましたが、右クリックの「アプリケーションから開く」で「イメージプレビュー」で開くようにしてました。なぜならマウスのスクロールボタンの上下で画像の拡大や縮小が出来ますし、2つ目以降の写真を開いても別のウィンドウが立ち上がらずに最初の写真でのイメージプレビューで開けるからです(internet explorerやペイントだと大量開くと閉じるのが面倒^^;) ですが、windows 2000だと右クリックの「アプリケーションから開く」で「イメージプレビュー」が無いのです。 windows 2000でイメージプレビューでの画像の開け閉めの方法や、ほかに写真の観賞に良いアプリケーションがあったら教えてください。(2000だとイメージのプレビューとありましたが、それは「アプリケーションから開く」にはありませんでした)

  • 画像ファイルの圧縮

    デジカメで撮った写真を友達にパソコンで送りたいのですが、 容量が大きくて送信できません。 圧縮ってかけてみてもサイズが変わらなかったのですが、 それは「jpg」の形式が既に圧縮されているからですよね? (それは以前に聞いたことがあります) メールの添付ファイル使用してたくさんの画像を送る方法はないのでしょうか? CD-ROMに落として、そのCD-ROMを友達に上げるのは思いついたのですが、それだと面倒くさいので。。 どなたか教えてください。よろしくお願いします。

  • 画像ファイル(jpeg, tiff)からの数値取得

    画像ファイル(静止画でjpeg,bmpなど)から数値のデータを取得する方法としてirfanviewでその画像を読み取り、PNM形式で出力すればいいということがわかりました。 いけそうでいけてない状態になっています。ヘッダーはテキストで出ますが、データ部がテキストエディタで読めないみたいになっています。数値を取り出す方法を教えて頂きたいのですが。 類似の質問ですが、tiffファイルというものがあります。geotiffであり、地理情報が画像データの中に含まれているようですが、これを格子の並びデータとして取り出す方法も検討しています。GISソフトを使えばいいようなのですが、具体的な方法が不明なのですが。 以上、よろしくお願いします。