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

解決


no-fly-bird  2004-05-06 13:50:43  No: 83248

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


いちゆ  2004-05-06 20:32:52  No: 83249

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


no-fly-bird  2004-05-07 08:24:36  No: 83250

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


魔界の仮面弁士  2004-05-07 13:05:45  No: 83251

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

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


no-fly-bird  2004-05-10 07:43:30  No: 83252

魔界の仮面弁士さんご返事ありがとうございます。
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 09:54:23  No: 83253

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


no-fly-bird  2004-05-11 05:49:47  No: 83254

>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-11 06:58:30  No: 83255

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


ポテチ  2004-05-11 07:01:08  No: 83256

画像系はあまりやってないですけど・・
フォームの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-11 07:03:43  No: 83257

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


no-fly-bird  2004-05-12 07:58:12  No: 83258

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加