• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイルをメモリに出力する方法)

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

mitarashiの回答

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

#1の続き、プログラム本体です。 以上、ご参考まで。 Sub saveCellColor() Dim strOutName As String Dim lngWidth As Long Dim lngHeight As Long Dim Quality As Long Dim lngResult As Long Dim lngGDIPToken As Long Dim pSrcBitmap As Long Dim pDstBitmap As Long Dim udtEncParam As EncoderParameters Dim udtGdiPlus As GdiplusStartupInput Dim x As Long, y As Long Dim myARGB As Long Dim strARGB As String Dim strBGR As String Const CLSID_JPEG = "{557CF401-1A04-11D3-9A73-0000F81EF32E}" Const CLSID_QUALITY = "{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}" Quality = 90 strOutName = GetDesktopPath & "\" & "test.jpg" lngHeight = 100 lngWidth = 200 'GDI+を使う準備をする udtGdiPlus.GdiplusVersion = 1 If GdiplusStartup(lngGDIPToken, udtGdiPlus, 0&) <> 0 Then Exit Sub End If 'セルの色を画像ファイルに書き出し '指定サイズのbitmapオブジェクトを生成 lngResult = GdipCreateBitmapFromScan0(lngWidth, lngHeight, 0, PixelFormat32bppARGB, ByVal 0&, pDstBitmap) For y = 0 To lngHeight - 1 For x = 0 To lngWidth - 1 strBGR = Hex(ActiveSheet.Cells(y + 1, x + 1).Interior.color) 'セル色を文字列に変換するが、規定のバイト数を保持しないと、色が化けてしまう strBGR = Right("000000" & strBGR, 6) myARGB = CLng("&H" & "FF" & Mid(strBGR, 5, 2) & Mid(strBGR, 3, 2) & Mid(strBGR, 1, 2)) 'セル色をARGBに変換して、オンメモリの画像に設定 GdipBitmapSetPixel pDstBitmap, x, y, myARGB Next x Next y ' JPG変換で保存 udtEncParam.Count = 1 With udtEncParam.Parameter(0) .Guid = GetCLSID(CLSID_QUALITY) .NumberOfValues = 1 .Type = 4 .Value = VarPtr(Quality) End With Call GdipSaveImageToFile(pDstBitmap, StrPtr(strOutName), GetCLSID(CLSID_JPEG), VarPtr(udtEncParam)) GdipDisposeImage pDstBitmap GdipDisposeImage pSrcBitmap Call GdiplusShutdown(lngGDIPToken) End Sub

関連するQ&A

  • bmp画像をtiff圧縮する方法

    VBAを使って、bmp画像をtiff圧縮するプログラムを教えてください。 検索すると http://okwave.jp/qa/q8508126.html 画像圧縮、変換用のライブラリ を使えば良いという回答ページは見つかったのですが 具体的な方法が分かりません。 「画像 dll vba tif bmp」などで検索してみても分かりませんでしたので 教えてください。

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

    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として定義されていて、 型が配列ではないのですが どのようにして扱えば良いのでしょうか? 一応、検索などして調べてみましたが 分かりませんでしたので教えてください。

  • bmpファイルをtxtファイルへ

    PgcEdit V8.5で、DVDからメニュー画面をbmpファイルで取り込んだものを、スキャナー(CanoScan N656U)のバンドル版 e.Typistエントリーで読み込もうとしましたが、「画像ファイルを開く」で、開けません。対応ファイルはbmpとTIFFとなってますが、何故でしょうか? 又、PgcEdit で、txtファイルでの出力は出来ないのでしょうか? もう一点、解決に繋がるか分かりませんが、bmpをTIFFに変換する方法は在るのでしょうか? 宜しくご教示下さい。

  • 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 のサイトにビットマップ画像を出力するための プログラムが記載されていました。 しかしながら、どうしても配列からどうやって出力すれば良いか分かりません。 どなたか教えてください。

  • TIFFファイルを開く

    TIFFファイルを開く __________________________________________________________________________________ #include <mist.h> #include <tiff.h> int main( void ) { mist::array2< mist::rgb< unsigned char > > img; // カラー画像を格納するための2次元配列の宣言 mist::write_tiff( img, "画像 001.tiff" ); return 0; } __________________________________________________________________________________ このプログラムではTIFFファイルが開けませんでした libファイルやincluddeファイルの設定(パスは通してある)はしているのですが、どのようなプログラムを組めば、TIFFファイルを表示(出力)できるのかわかりません>< お分かりになるかたがいるのならば、ぜひ教えてください。

  • bmp画像をjpegやpng画像に圧縮する方法

    http://okwave.jp/qa/q8809275.html このページでbmp画像をtiff圧縮する方法を教えていただきました。 このプログラムを改良して jpegやpng画像にも対応したプログラムを作ることはできないでしょうか? 恐らく、    CLSIDFromString StrPtr("{E09D739D-CCD4-44EE-8EBA-3FBF8BE4FC58}"), .Guid ' 圧縮方法 というところを書き換えれば、他の形式にも対応できると思うのですが、 CLSIDFromString で検索しても、情報は見つかりませんでした。 どうか教えてください。

  • A0サイズ画像を印刷しないでファイル出力したい

    大きな画像ファイルを編集して印刷していますが、今回は私のA0カラー プロッターでは美しい印刷ができないため、ファイル出力して業者に 渡して印刷してもらおうかと考えています。そのソフトは、一般的な ソフトでないため、画像ファイルに出力して渡すことになります。 たぶん数百メガのBMPかpngになると思います。ただ、このソフトは ファイル出力ができないため、プリントイメージをファイル変換して くれるソフトが必要です。A3程度までの出力に対応したソフトはあり ますが、A0サイズを指定してBMPに変換してくれるソフトはないでしょ うか?(巨大なBMP出力してくれるプリンタードライバー) よろしくお願いいたします。

  • aiファイルから直接画像を出力することはできますか

    複数のイラレのaiファイルから tiff形式で画像を出力したいのですが 一つ一つイラレで開いて手作業で画像出力を行うのは非常に面倒です。 バッチ処理で一度に出力するような方法があれば 教えてください。

  • 数字の入った配列をファイルへ出力。

    今、hist[256]というint型の配列に数字が入っているとします。 これを、テキストファイルに出力して、 0 242 5654 232 3123 756 ・ ・ ・ こんな感じで、ファイルに出力したいです。 文字としての出力になるのでhist[256]配列を、int型からchar型に変換しないとダメでしょうか? また、変換するとしたら、char型だと unsigned char にしても 0~256の値までしか1つの配列に保存できませんよね? もっと大きい数字も入っているので何とかする方法も教えて下さい。 初歩的な質問で申し訳ありませんが、よろしくお願いします。

  • TIFF形式のイメージをBMPに変換する方法

    VCにてTIFF(非圧縮、RGB)をメモリに展開する事ができましたが、イメージを画面に表示するためにBMP変換を行いたいと考えています。どなたか、変換アルゴリズムかサンプルプログラムなど有りませんか?