[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/01/13(Thu) 17:17
投稿者名:ひろぉ
Eメール:
URL :
タイトル:
画像のサイズを変更する方法

はじめまして、ご教授おねがいします。

読み込んだ画像(Pictureオブジェクト)自体のサイズを変更したいのですが、どのようにしたらよいの
でしょうか?
APIのStretchDIBitsを使えばサイズの変更が出来るようなのですが、ヘッダの宣言をしたり、読み込

だ画像を配列に格納したりなど色々としないといけないことがあるようです。
やはり、これを使わないと画像自体のサイズを変更できないのでしょうか?
それとも、他に良い方法があるのでしょうか?

PictureBoxオブジェクトへの表示サイズ変更方法などはすぐに出来るのですが画像サイズ自体の変更
をすぐに出来る方法がどうしてもみつかりません。

よろしくお願いします。

投稿時間:2005/01/13(Thu) 19:07
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 画像のサイズを変更する方法
> PictureBoxオブジェクトへの表示サイズ変更方法などはすぐに出来るのですが画像サイズ自体の変更
> をすぐに出来る方法がどうしてもみつかりません。

この画像サイズとは何を指しておられるのでしょうか?
1.縦横のピクセルのサイズ(寸法)
2.ファイルのバイト数

1.なら拡大・縮小してファイルに保存すればいいのでは。
2.なら、JPGやPNG・GIF等に変更して圧縮して保存すればできますが。
ここのグラフィック関係をご覧下さい。

投稿時間:2005/01/13(Thu) 20:45
投稿者名:ひろぉ
Eメール:
URL :
タイトル:
Re^2: 画像のサイズを変更する方法
返信ありがとうございます。

> この画像サイズとは何を指しておられるのでしょうか?
> 1.縦横のピクセルのサイズ(寸法)
> 2.ファイルのバイト数
これは1のピクセル自体のサイズの変更の事をあらわしていました。

> 1.なら拡大・縮小してファイルに保存すればいいのでは。

拡大・縮小っていうのはPictureBoxオブジェクトのPaintPictureメソッドなどを使って拡大・縮小をし

保存をということでしょうか?

たとえば、下記のように

Picture1.Picture = LoadPicture(FILE_PATH)

Picture1.LoadPicture(Picture1.Picture,0,0,Picture1.ScaseWidth,Picture1.ScaleHeight)

SavePicture(Picture1.Picture, "C:\Tmp.bmp")

としても、画像のサイズは元のままで保存されてしまいます。
拡大・縮小とは別の方法の事をいっているのでしょうか?

的外れな質問だったらすいません。。

投稿時間:2005/01/13(Thu) 22:43
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: 画像のサイズを変更する方法
先の回答でも書きましたが、ここのグラフィック関係をご覧下さい。
その中の ピクチャーボックスに表示・描画した画像・文字の保存 の中に
下記のように書いていますが、.AutoRedraw = False になっていませんか?


  With Picture1
    '描画したものを保存する場合Trueにする
    .AutoRedraw = True

投稿時間:2005/01/14(Fri) 10:31
投稿者名:ひろぉ
Eメール:
URL :
タイトル:
Re^4: 画像のサイズを変更する方法
すいません。返信遅くなりました。

> 先の回答でも書きましたが、ここのグラフィック関係をご覧下さい。
> その中の ピクチャーボックスに表示・描画した画像・文字の保存 の中に
> 下記のように書いていますが、.AutoRedraw = False になっていませんか?
>
>
>   With Picture1
>     '描画したものを保存する場合Trueにする
>     .AutoRedraw = True

.AutoRedrawはTrueになっていました。

上記で教えてもらった保存だと、描画したもの自体はそのままのサイズで保存されるのですが、
ある画像を読み込んでピクチャのサイズをPaintPictureメソッドで変更して保存という形にすると
見た目上はピクチャーの枠にはまって表示されるのですが、保存をするとやはり元のサイズで保存され
てしまいます。

前の返信の時に間違って書いていたところがありました。すいません。

Picture1.PaintPicture(Picture1.Picture,0,0,Picture1.ScaseWidth,Picture1.ScaleHeight)
       ↑
     ここがLoadPictureになっていた。

やはり画像自体のサイズはそんな簡単に変更できないものなのでしょうか?

投稿時間:2005/01/14(Fri) 11:10
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: 画像のサイズを変更する方法
> > 先の回答でも書きましたが、ここのグラフィック関係をご覧下さい。
> > その中の ピクチャーボックスに表示・描画した画像・文字の保存 の中に
> > 下記のように書いていますが、.AutoRedraw = False になっていませんか?

又、グラフィック関係の中のピクチャーボックスで画像を拡大・縮小及びJPG形式で保存も
試して見ましたか?

> Picture1.PaintPicture(Picture1.Picture,0,0,Picture1.ScaseWidth,Picture1.ScaleHeight)

上記で拡大・縮小できましたか?
拡大・縮小して保存する最低限のコードを投稿するなり、ここのグラフィック関係を
よくご覧下さい。

一度下記を試して見て下さい。
Private Sub Command1_Click()
    Picture1.AutoRedraw = True
    Picture1.Picture = LoadPicture("c:\test.bmp")
    Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
    SavePicture Picture1.Image, "c:\MyBmp.bmp"
End Sub

投稿時間:2005/01/14(Fri) 13:13
投稿者名:ひろぉ
Eメール:
URL :
タイトル:
Re^6: 画像のサイズを変更する方法
> 一度下記を試して見て下さい。
> Private Sub Command1_Click()
>     Picture1.AutoRedraw = True
>     Picture1.Picture = LoadPicture("c:\test.bmp")
>     Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight
>     SavePicture Picture1.Image, "c:\MyBmp.bmp"
> End Sub

上記のコードでなぞが解けました。

サイズ変更した画像を保存したいときはPictureBoxのPictureを保存するのではなく
Imageを保存しなければいけなかったんですね^^;

これで画像自体のサイズを変更することができます。

最後までありがとうございましたm(__)m