C++ WindowsAPI でプログラミングしています。
以下の場合においてビットマップハンドルを構成し、BitBltなどで貼り付ける楽な方法が知りたいです。
ファイル内にビットマップ形式の画像ファイルのバイナリデータが丸ごと埋め込まれている、
ファイル画像ファイルデータの前後に何らかのデータが置かれる、かつ、画像ファイルバイナリの
開始位置と終了位置を知ることができる。
自分が調べた限りでは、バイナリを読んでビットマップファイルの各構造体に書き込んで、
CreateDIBitmap を使うのがもっともよさそうなのですが、もっと楽な方法がないものでしょうか?
No.2ベストアンサー
- 回答日時:
WindowsAPIだと
実行可能ファイルであればリソースとして拾えば可能と思いますが
それ以外の任意の形式中のビットマップファイルのバイナリについて
>バイナリを読んでビットマップファイルの各構造体に書き込んで
を行わないなると
一端テンポラリなファイルに書き出してからLoadImageなどで読み込むくらいに絞られるはずです。
とはいえ、そうするためにかかるコストがわずかで済むと判明している場合に限っては、その手もありかもしれません。
ただ、そこでパフォーマンスが必要な場合
それらファイル操作関連に強いクラスが現状手元にない場合は
面倒さでいえばどっちもどっちな気がします。
一度作ってしまってカプセル化すれば、バグフィックス以外ではそれ以降いじる必要がないような部分ですから
>バイナリを読んでビットマップファイルの各構造体に書き込んで、CreateDIBitmap を使う
でもよろしいかと思います。
というより、それが一番素直で、かつ無駄なコストがないかなと
(過去にJPEGとかの圧縮形式をバイナリいじろうとしたら大変面倒でしたがw BMPならチョロっとでいいですからね。)
DirectXなんかだと
D3DXCreateTextureFromFileInMemoryとか使えば、メモリやメモリマップドファイルからポインタで一発なんですけどね。(DirectXの初期化は、大抵超メンドイですが)
なお
>BitBltなどで貼り付ける
のが主目的で、かつメモリへのポインタアクセスで内容を書き変えたいのであれば
環境次第でCreateDIBitmapよりCreateDIBSectionの方が、パフォーマンスや扱いやすさの点で勝る場合があります。
No.3
- 回答日時:
おっと、時間かけて以前のソース確認しながら書いてたら、unacyoさんの内容と一部かぶってしまいましたw
そこんとこ失礼いたしました。
No.1
- 回答日時:
ファイルの中にあるビットマップに、BITMAPFILEHEADERも入っているのであれば、ヘッダー(FILEとINFO)+画像データを一度HDDにファイルとして保存し、LoadImage()したら、ビットマップハンドルが貰えますから、これとCreateCompatibleDC()で作ったDCをSelectObject()で結び付けて、Bitblt()、が楽かな?
たぶん、LoadImage()はDIBで作らないと、真っ黒画像が転送されちゃいますので、指定を忘れずに。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- USBメモリー・SDカード・フラッシュメモリー microSDカード 4 2022/04/06 22:00
- Excel(エクセル) EXCELマクロでandroidタブレットから取りんだJPEGファイルをうまくセルに貼り付けられない 2 2022/07/31 15:03
- その他(パソコン・周辺機器) バッファローのnasですが、音楽ファイルと動画ファイルを再生できません。画像ファイルは読み込めます。 3 2022/09/28 03:32
- Illustrator(イラストレーター) Illustrator CS5 埋め込んだ画像を抽出(個別の画像で保存)できるか? 1 2022/11/28 16:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ページ読み込み時に自動的にsub...
-
EXCEL VBAでテキストファイルの...
-
DXFファイル用クラスライブラリ...
-
バッファとは何ですか
-
エラー:ストリームの終わりを...
-
バイナリファイル(画像等)デ...
-
【python】Excelファイルを読み...
-
バイナリエディタのつかいかた
-
ファイル読み込みエラーになる。
-
地熱発電などでいう「バイナリ...
-
エクセルVBA 2千万行のCSVファ...
-
ファイルをセーブする時のfopen...
-
バイナリファイルの検索について
-
C言語の質問です。バイナリ形...
-
VB5.0 SP3にてEXCE...
-
EXCEL VBAで、バイナリデータの...
-
画素値取得について
-
Paiza Cloudです。学籍番号と氏...
-
Paiza Cloudです。 どうやれば...
-
C言語初心者の質問失礼します。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッファとは何ですか
-
Microsoft VBAで2GBを超えるフ...
-
EXCEL VBAでテキストファイルの...
-
ページ読み込み時に自動的にsub...
-
エクセルVBA 2千万行のCSVファ...
-
VBA バイナリ―から文字列にす...
-
エラー:ストリームの終わりを...
-
入力ファイルをバイナリにする利点
-
バイナリエディタのつかいかた
-
MacからWinにファイルを添付す...
-
EOF
-
【python】Excelファイルを読み...
-
C言語の質問です。バイナリ形...
-
画像の保存方法。
-
テキストデータをSQLServerに取...
-
バイナリファイルの比較につい...
-
bitmap画像の保存がうまくいき...
-
なぜデータの整合性を確認する...
-
C言語とシリアル通信の送受信...
-
【Teraterm】filewritelnについて
おすすめ情報