• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像ファイルを配列に格納する方法)

画像ファイルを配列に格納する方法

このQ&Aのポイント
  • 画像ファイルを配列に格納する方法について教えてください。
  • 具体的なプログラム例や参考情報があれば教えていただけると助かります。
  • Long型の変数であるimageやpDstBitmapを配列として扱う方法についても教えてください。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

http://okwave.jp/qa/q8852322.html (http://okwave.jp/qa/q8852322.html) で回答した者ですが、実はあの#1-2のコードには前半があって、ファイルからセル色に取り込んでいるのです。その部分を投稿しますので改造して下さい。 '(2) ファイルから画像を読み込みbitmapオブジェクトに変換する If GdipCreateBitmapFromFile(ByVal StrPtr(strInName), pSrcBitmap) <> 0 Then Exit Sub End If '(3) 読み込んだ画像のサイズを取得 '画素数は480x360程度でないと、書式が多すぎるというエラーが発生する GdipGetImageWidth pSrcBitmap, lngWidth GdipGetImageHeight pSrcBitmap, lngHeight '(4) bitmapオブジェクトから1画素ずつ読み込んで、エクセルのセルのColorに設定 'GDI+から取得する色は透明度を含むARGBであるが、セルに設定する場合はBGRに変換する必要がある Application.ScreenUpdating = False For y = 0 To lngHeight - 1 For x = 0 To lngWidth - 1 '画素の色を取り出し、文字列に変換する 'ビットシフトは面倒そうなので、スピードは犠牲にして?文字列に変換して処理 GdipBitmapGetPixel pSrcBitmap, x, y, myARGB strARGB = Hex(myARGB&) With ActiveSheet Range(.Cells(1, 1), .Cells(1, lngWidth)).ColumnWidth = 1.63 'ARGB->BGRに変換してセル色に変換 .Cells(y + 1, x + 1).Interior.color = RGB(CInt("&H" & Mid(strARGB, 3, 2)), CInt("&H" & Mid(strARGB, 5, 2)), CInt("&H" & Mid(strARGB, 7, 2))) End With Next x Next y Application.ScreenUpdating = True >これらの変数はLongとして定義されていて、 >型が配列ではないのですが >どのようにして扱えば良いのでしょうか? ここでのimage、pDstBitmapは「ハンドル」と言われるものです。画像ファイルが読み込まれ、ビットマップオブジェクトが生成された時に、Windowsによってつけられた管理番号といった感じでしょうか。 ついでに、先のQAのARGBのオーバーフローについてですが、下記をご参照下さい。 http://support.microsoft.com/kb/189323/en-us 機械翻訳したページもありますが、よけいに分かり難いような... http://support.microsoft.com/kb/189323

myumyu1234
質問者

お礼

ありがとうございます。 うまくいきました。 あともう一つ質問がありますので どうかよろしくお願いいたします。

関連するQ&A