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

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

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

http://okwave.jp/qa/q8852322.html このページで、 配列から直接圧縮画像ファイルを出力する方法を教えていただきました。 次は圧縮画像ファイルから配列を読み取るプログラムを作りたいと考えています。 http://tanlab.blog.fc2.com/blog-entry-31.html このページで画像ファイルをメモリに読み込む方法は書かれていて、 GdipCreateBitmapFromFile(ByVal StrPtr(file1), image) で変数imageに読み込むことができます。 このimageを上記のページの変数pDstBitmapに回すことで、 読み込んだ画像を別の画像として出力できることがわかりました。 いまやりたいことは 変数imageあるいは変数pDstBitmapを配列に書き出すことなのですが どうやれば良いでしょうか? これらの変数はLongとして定義されていて、 型が配列ではないのですが どのようにして扱えば良いのでしょうか? 一応、検索などして調べてみましたが 分かりませんでしたので教えてください。

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

  • ベストアンサー
  • 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

  • VBAで配列からbmp画像を出力する方法

    VBAで配列からbmp画像を出力する方法を教えてください。 例えば、 dim a(255,255) で作成した二次元配列があり、それぞれの中に0~255の数値が格納されているとします。 この画像からグレースケールあるいは任意の配色で 256x256の解像度のbmp画像を出力するプログラムを VBAで作りたいのですがどのようにすれば良いですか? 検索して調べたのですが、 http://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=54343;id=excel http://akadamashy.blog68.fc2.com/blog-entry-915.html のサイトにビットマップ画像を出力するための プログラムが記載されていました。 しかしながら、どうしても配列からどうやって出力すれば良いか分かりません。 どなたか教えてください。

  • 圧縮ファイルがDLできません

    http://j.orz.hm/?torrentfree.blog109.fc2.com/blog-entry-1359.html ここのサイトの説明には >(1)Recovery Flasher v1.50をダウンロードして解凍します。 とありますが、解凍する為の圧縮ファイルが出てきません。1つのファイルが出てくるだけです。 どうすればいいですか?

  • ファイルをメモリに出力する方法

    ある配列をtiff画像ファイルとして出力したいのですが 配列を一度bmp画像ファイルとして出力して http://okwave.jp/qa/q8809275.html このページにある方法を使って、それをtiffファイルに変換して 残ったbmpファイルを削除するというプログラムを作りました。 この方法だと、HDDにアクセスする手順が多くなるため、ファイル数が多い時に時間がかかってしまいます。 bmpファイルをメモリにいったん保存しておいて、 それをtiffファイルに書き換えるようなプログラムを作るにはどうしたら良いですか? あるいは配列から直接tiff画像ファイルを出力する方法があれば 教えてください。

  • アメブロ

    こんにちは。ブログに画像や動画をのせたいんですけどやりかたがわかりません。この型のような感じで載せたいんですが・・・http://666newworldorder.blog133.fc2.com/blog-entry-2.html誰か簡単な方法を教えてください。ちなみにアメブロです。

  • MP4の動画ファイルをアップロードしたいのですが

    無料のFC2でHPを作ってます。 MP4の動画ファイルをアップロードしたいのですが 可能でしょうか? FC2でアップロードできる拡張子を調べようとググりましたが http://fc2information.blog.fc2.com/blog-entry-218.html http://emotion92.blog.fc2.com/blog-entry-112.html を見てもよくわかりませんでした。

  • 8bitインデックス画像の入出力方法

    http://okwave.jp/qa/q8852322.html http://okwave.jp/qa/q8856128.html このページで画像の配列への入出力の仕方を教えていただきました。 配列の読み書きの方法が分かればできるかと思ったのですが やり方がわかりませんでしたので質問いたします。 24あるいは32bitの場合には教えていただいた方法で問題ないのですが 8bitの画像(インデックスカラー画像)の場合にはどうしたら良いでしょうか? 8bit画像を GdipCreateBitmapFromFile(ByVal StrPtr(strInName), pSrcBitmap) で取得し、そのまま GdipSaveImageToFile pSrcBitmap, StrPtr(strOutName), encTIFF, VarPtr(udtEncParam) を使って、別の画像形式に再圧縮して出力しても 8bit画像として出力されるので、 pSrcBitmapにはインデックスカラーに関する情報と 256階調(8bit)での画像情報も含まれているようです。 しかしながら、 GdipBitmapGetPixel pSrcBitmap, x, y, myARGB で画像情報を抽出すると 8bit画像を読み込んだとしても 32bitカラー情報として抽出されてしまいます。 http://www.vbforums.com/showthread.php?718163-GDI-GdipGetImagePixelFormat-(untrusted) このサイトにPixelFormatの設定の仕方が書かれてあって、 PixelFormat24bppRGB = &H21808 を用いると24bit画像として出力できることが分かりました。 PixelFormat8bppIndexed = &H30803 を指定してみたのですが、 一応、8bit画像として出力することは確認できたのですが 出力にものすごく時間がかかってしまうのですが。 恐らくインデックスを生成するのに時間がかかっているのだと思うのですが 既にインデックスがでている場合にどのように指定すれば良いか、 8bit画像からインデックスを抽出するのかが分からないのですが。 どのようにすれば インデックスカラーと256階調(8bit)での画像情報を 配列に読み込み、および配列から画像への書き出しを行えますでしょうか?

  • bunzipの使い方

    壊れた圧縮画像ファイルを強制的に解凍する「bunzip」というソフトがありますが下記のところからダウンロードして下記の所の解説通りにやってもうまくいきません。 先日初期化して再インストールしたのですが以前はうまくできたのに今はできません。 どうやったらできますか? http://lxsis00.blog51.fc2.com/blog-entry-2.html

  • javascriptでURLを取得するには?

    pcafeさん(http://pcafe.blog3.fc2.com/blog-entry-372.html)にあるようなことを、ブログ上でなくてホームページ上で実現したいと思っています。 上記のサイト様を踏まえた上で、どのようなことがしたいかと言いますと、下記のようなことをしたいと思っています。 サンプル図:http://lancerevolution.tuzikaze.com/sampletest.html (1)http://×××.blog×.fc2.com/blog-entry-1.htmlのリンクをクリックし、新規ウィンドウでmenu.htmlを開く (2)http://×××.blog×.fc2.com/blog-entry-1.htmlの「1」をインラインフレームの「src」に代入して、1.htmlのファイルを(3)に表示させる *子のウィンドウのURLではなくて、親のウィンドウのURLを対象にして、その数字に応じたhtmlファイルを(3)に表示させます つまり、 ◆http://×××.blog×.fc2.com/blog-entry-1.htmlと言うページがあった時に、子ウィンドウのインラインフレームに <iframe src="="./file/1.html"></iframe> ◆http://×××.blog×.fc2.com/blog-entry-2.htmlと言うページがあった時に、子ウィンドウのインラインフレームに <iframe src="="./file/2.html"></iframe>         ・         ・ ◆http://×××.blog×.fc2.com/blog-entry-300.htmlと言うページがあった時に、子ウィンドウのインラインフレームに <iframe src="./file/300.html"></iframe> にしたいということです。 *インラインフレームがある部分は、menu.htmlと言うページしか使わないので、ページ1つ1つにsrcは設定できません。設定できるのは、menu.htmlのみです。そのため、pcafeさんのやり方がどうしてもしたいのです。 長くなりましたが、どうぞよろしくお願いします。

  • 画像処理プログラムで細線化を行っています。

    画像処理プログラムで細線化を行っています。 「田村の方法」を用いようと思い、 http://imagingsolution.blog107.fc2.com/blog-entry-138.html を参考にプログラム作成したのですが、うまくいきません。 他に参考になるサイト、文献などありましたら教えてください。 よろしくお願いします。

  • chromeでサイトの埋め込み画像が表示されない

    google chromeを使っているのですが、たまにサイトに埋め込まれた画像が読み込まれずそのページ上で見ることができません。どうやったら見られることができますか? 何かオプションなどの設定を変えれば通常通り見ることができるでしょうか? ・だいたい同一のサイトでなります。 ・インターネット・エクスプローラーでは普通にサイト内で見られる画像です。 ・FC2ブログでたまにありそうな感じがします。 一応どのサイトのものかのリンクを貼ってりますが、2ちゃんまとめ系のサイトなので、それ系が嫌いな方は見ないほうが良いかもしれません^^; http://kanasoku.blog82.fc2.com/blog-entry-20207.html

専門家に質問してみよう