2012-04-10 10 views
4

Visual C++ 6.0を使用しており、CImageにアクセスできないCBitmapにjpgをロードするにはどうすればよいですか?jpgファイルをCBitmap(Visual C++ 6.0)にロードするにはどうすればよいですか?

THX

+0

ほとんどのいわゆるC++コンパイラは完全に標準に準拠していませんが、MSVC 6は古くて壊れており、実際にはC++コンパイラと呼ばれる必要はありません。アップグレード!また、あなたの質問に対する私たちの答えは、VC6ではうまくいかないかもしれないことを認識しておいてください。ここでは、標準のC++、つまりmsvc6よりも3年後、 – PlasmaHH

+4

一部の人々は、VC6が必要なプラットフォームやツールチェーンに縛られています。他の人の状況を却下してはいけません。特に、あなたがそれについて何も知らないのであれば、そうではありません。 – Roel

答えて

1

私の知っているネイティブ方法はありません。私は常にJPGとPNGのためにFreeImageを使用しました.PHNGをHBITMAPにロードする方法のFAQのサンプルコードがあります(これはJPGとまったく同じです)。

JPGをリソースとして保存する場合は、JPGリソースタイプを作成して保存してください。BITMAPリソースとして追加しないでください。あなたはそれをロードしようとするあらゆる種類の問題を抱えています。私はそれが明らかに聞こえるが、それを理解するのにはしばらく時間がかかりました。

1

あなたができない、あるいは少なくとも、ビルド中に方法はありません。 CxImageを見てください。特にjpgのサポートが必要な場合には、おそらく動作させることができます。

1

この種の変換は複雑なので、私は外部の図書館を利用しています。thisをご覧ください。

2

私は単にjpgだけでなく他の一般的な形式も読み込むためにOleLoadPicturePath apiを呼び出します。

IPictureオブジェクトにロードした後、get_Handleを呼び出してHBITMAPのハンドルを取得できます。

おかげ

1
CBitmap bmp; 
HANDLE h = ::LoadImage(NULL, _T("c:\\MyImage.jpg"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); 
bmp.Attach(h); 
+0

は、jpgではなく、ビットマップのみを読み込むことができます。私は "LoadImage"のためのptを与えたので便利です... thx – jdl

+0

@jdl試しましたか?私は昨日メモリから出ていましたが、私は自分のコードでJPEGを開くための正確なステートメントを書いています: 'm_hDIBSection = LoadImage(NULL、lpszPathName、IMAGE_BITMAP、0、0、LR_DEFAULTCOLOR | LR_CREATEDIBSECTION | LR_LOADFROMFILE); ' –

+0

@jdl、私の謝罪、私はあなたが正しいと思うし、私はその行をコピーしたプログラムはBMPファイルでのみ動作します。この回答を削除することがあります。 –

関連する問題