インターネットにある画像を取り込んで100×100に縮小にして.bmpで保存するプログラムを作ってます。
縮小はstretchblt関数を使うのは知ってますが、使い方がよくわかりません。
教えてください。
画像サイズ変更
検索すれば出てきますが、これは編集する画像を一度画面に表示させる必要があるようです。
別な方法になりますが、読み込んだ画像を一度bmp形式に変換し、それをメモリ操作で100x100のビットマップファイルに書き直すというのはどうでしょうか?
別な方法になりますが、読み込んだ画像を一度bmp形式に変換し、それをメモリ操作で100x100のビットマップファイルに書き直すというのはどうでしょうか?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
まずjpgやらgifやらの画像をbmp形式に変換する方法ですが、すみませんがやった事がないのではっきりとしたことがいえません。
とりあえず「jpg bmp 変換 DLL」とかで検索すれば変換用のライブラリが見つかると思います。
次にビットマップファイルの変換&出力方法ですが、BMヘッダ で検索するとこんなのが出てきたりするのでこれを利用します。
1.出力した中間ファイルを開く
2.画像データのサイズを取得後、Byte型でメモリを動的に確保
3.次のようなコードを使い、画素を減らす。(今考えて適当に書いたから上手くいくかは保障できない。)
大体こんな感じになるかと。
#方法は前回のレスに書いたと思ったのですが・・・。
とりあえず「jpg bmp 変換 DLL」とかで検索すれば変換用のライブラリが見つかると思います。
次にビットマップファイルの変換&出力方法ですが、BMヘッダ で検索するとこんなのが出てきたりするのでこれを利用します。
1.出力した中間ファイルを開く
2.画像データのサイズを取得後、Byte型でメモリを動的に確保
3.次のようなコードを使い、画素を減らす。(今考えて適当に書いたから上手くいくかは保障できない。)
[ここをクリックすると内容が表示されます]
4.表通りにbitmapのバイナリを作成し、出力する。コード: 全て選択
Dim x As Long,y As Long
Dim i As Long,j As Long
Type rgb
r As Double
g As Double
b As Double
End Type
Dim OutputBitmap[9999] As rgb
Dim X As Double,Y As Double,index As Long
Dim sqrxy As Double
X=x/100
Y=y/100
sqrxy=Sqr(x*y)
For i=0 To x-1
For j=0 To y-1
'x,yは中間ファイルの画像サイズ
'bmp配列は動的に確保されたメモリ
'tは画像データの1行のサイズ
index=Int(i/X)*100+Int(j/Y)
OutputBitmap[index].r=OutputBitmap[index].r+bmp[i*3+j*t+54]/sqrxy
OutputBitmap[index].g=OutputBitmap[index].g+bmp[i*3+j*t+55]/sqrxy
OutputBitmap[index].b=OutputBitmap[index].b+bmp[i*3+j*t+56]/sqrxy
Next j
Next i
大体こんな感じになるかと。
#方法は前回のレスに書いたと思ったのですが・・・。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。