画像を指定のサイズで保存するには?

解決


no-fly-bird  2004-05-06 04:50:43  No: 83248  IP: [192.*.*.*]

PictureBoxに描画した画像を保存する際、サイズ(縦、横)を変更して保存したいのですが、何か良い方法があるでしょうか?例えば、PhotoShopのようにドキュメントのサイズのようにcm、インチ、ピクセルのように指定したいのですが???
HeightやWidthをtwipで指定するとどーもよくわかりません。
よろしくお願いします。  VB6.0を使用です。

編集 削除
いちゆ  2004-05-06 11:32:52  No: 83249  IP: [192.*.*.*]

Picture1のピクチャをサイズを指定したPicture2にPaintPictureなりで、
画像をコピーして、保存する…とか?

編集 削除
no-fly-bird  2004-05-06 23:24:36  No: 83250  IP: [192.*.*.*]

いちゆさんお返事ありがとうございます。
初心者なもんで、PaintPictureを使用したことがないのですが、
サイズを指定する方法は、仮にピクセルで指定する場合(200×200)、
Picture2.ScaleMode= vbPixel
Picture2.ScaleHeight = 200
Picture2.ScaleWidth = 200
に指定したものにPaintPictureを使用するとそのサイズに変更されるのですか?
よろしくお願いします。

編集 削除
魔界の仮面弁士  2004-05-07 04:05:45  No: 83251  IP: [192.*.*.*]

> Picture2.ScaleMode= vbPixel
> Picture2.ScaleHeight = 200
> Picture2.ScaleWidth = 200
Scale系プロパティを操作すると、ScaleModeはユーザ定義になりますので、上記のような指定方法は意味がありません。このあたりの事情は、MSDNライブラリの目次から
[Visual Basic の使用方法]-[プログラミング ガイド]-[テキストおよびグラフィックスの操作]-[座標系]
などで解説されていますので、そちらを参照してください。

> PaintPictureを使用するとそのサイズに変更されるのですか?
MSDNライブラリで、PaintPictureメソッドの解説を読んで見てください。
引数の指定によって、拡大・縮小・反転などが行えるようになっています。

編集 削除
no-fly-bird  2004-05-09 22:43:30  No: 83252  IP: [192.*.*.*]

魔界の仮面弁士さんご返事ありがとうございます。
PaintPictureで画像の拡大・縮小はできたのですが、
例えば、画像の大きさを600×50ピクセルで保存しようとして
 Picture2.ScaleMode = vbPixels
 Picture2.PaintPicture Picture1.Image, 0, 0, 600, 50
 SavePicture Picture2.Image, App.Path & "\test.bmp"
と書くと
出来た画像をPhotoShopなどの画像ソフトで参照すると
ピクセル寸法が245×25になってしまいます。

このピクセル寸法に合わせて画像を作成しようとしているのですが、無理でしょうか???

編集 削除
魔界の仮面弁士  2004-05-10 00:54:23  No: 83253  IP: [192.*.*.*]

PictureBoxコントロール(Picture2)のサイズを、画像サイズに合わせていますか?

編集 削除
no-fly-bird  2004-05-10 20:49:47  No: 83254  IP: [192.*.*.*]

>PictureBoxコントロール(Picture2)のサイズを、画像サイズに合わせていま>すか?
 Picture2.ScaleMode = vbPixels
 Picture2.Width=600
 Picture2.Height=50
 Picture2.PaintPicture Picture1.Image, 0, 0, 600, 50
 SavePicture Picture2.Image, App.Path & "\test.bmp"
 にしてみたんですけどうまくいかなかったです。

編集 削除
みり  2004-05-10 21:58:30  No: 83255  IP: [192.*.*.*]

上でも書かれてますがScaleModeの使い方がおかしいですよ
この場合だとPicture2を貼り付けているフォームのScaleModeをvbPixelsに
しないと意味ありません。
一度ScaleModeの定義を見直してみてはいかがでしょう?

編集 削除
ポテチ  2004-05-10 22:01:08  No: 83256  IP: [192.*.*.*]

画像系はあまりやってないですけど・・
フォームのScaleModeもセットにしてみては?

 Me.ScaleMode = vbPixels
 Picture1.ScaleMode = vbPixels
 Picture2.ScaleMode = vbPixels
 Picture2.AutoSize = True
 Picture2.PaintPicture Picture1.Image, 0, 0, 600, 50
 SavePicture Picture2.Image, App.Path & "\test.bmp"

編集 削除
ポテチ  2004-05-10 22:03:43  No: 83257  IP: [192.*.*.*]

みりさん。
すいません。かぶって投稿してしまいました。

編集 削除
no-fly-bird  2004-05-11 22:58:12  No: 83258  IP: [192.*.*.*]

Me.ScaleMode = vbPixelsで
解決しました。
いろいろみなさん、お世話になりました。

編集 削除