掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VBAで画像ファイルをサイズ変更し出力するには? (ID:139165)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Windows XP , Access 2003 で指定された画像ファイルを読み込み、 サイズの変更を行い、ファイルとして保存したいです。 現在ビットマップのファイルを読み込み、 WindowsAPI の StretchBlt を使って縮小した画像を ウィンドウに表示することはできるのを確認しましたが、 ウィンドウではなくファイルに保存するための方法が分かりません。 http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200708/07080012.txt にある紅閃光様のソースを参考に以下のように書いています。 'デバイスコンテキストハンドル取得 hdc = GetDC(0&) 'メモリデバイスコンテキスト作成 hSrcMem = CreateCompatibleDC(hdc) hDstMem = CreateCompatibleDC(hdc) hBmp = LoadImage(0, SourceFileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE) hOldBmp = SelectObject(hSrcMem, hBmp) StretchBlt _ hDstMem, _ ←ここを hdc にしたらウィンドウに表示できました 0, 0, 300, 300, _ hSrcMem, _ 0, 0, 554, 787, _ SRCCOPY ' GDIスタートアップ構造体初期化 GdiPStartupInput.GdiplusVersion = 1 ' GDI+ライブラリ初期化して失敗なら終了 If GdiplusStartup(GDIPToken, GdiPStartupInput, 0&) <> 0 Then Exit Sub ' ピクチャーからGDI+BITMAPを作成 Ret = GdipCreateBitmapFromHBITMAP(hDstMem, 0&, GdipBmpHdl) ← ここを hBmp にしたら、そのまま同じファイルを出力できました If Ret = GDIPlusStatusConstants.Ok Then ' エンコーダパラメータ設定 EncodParameters.Count = 1 With EncodParameters.Parameter(0) .Guid = ConvCLSID(CLSID_QUALITY) .NumberOfValues = 1 ' 4=EncoderParameterValueTypeLong .Type = 4 ' 圧縮品質 .Value = VarPtr(Quality) End With ' JPG変換で保存 SavePictureJpg = GdipSaveImageToFile(GdipBmpHdl, StrPtr(DestImageFile), ConvCLSID(CLSID_JPEG), VarPtr(EncodParameters)) ' GDI+BITMAPを廃棄 GdipDisposeImage GdipBmpHdl End If ' GDI+ライブラリ開放 GdiplusShutdown GDIPToken
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.