画像を縮小し表示するには?


ぴよ  2003-09-18 02:03:42  No: 108726

bmp画像なんですが、縮小表示するにはどうすればよいのでしょうか?
出来るだけ何が写っているか分かるように縮小したいのですが・・・。

サイズとしては、320*240 →  32*24 くらいにしたいと思っています。


Take1  2003-09-18 04:32:05  No: 108727

これはどうですか?

Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, _       ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, _
      ByVal nHeight As Long, ByVal hSrcDC As Long, _
      ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, _
      ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Private Declare Function SetStretchBltMode Lib "gdi32" (ByVal hdc As Long, _
 ByVal nStretchMode As Long) As Long

Private Const SRCCOPY = &HCC0020

Private Const COLORONCOLOR = 3

Private Sub Command1_Click()

Picture2.Cls

Call SetStretchBltMode(Picture2.hdc, COLORONCOLOR)

Call StretchBlt(Picture2.hdc, 0, 0, Picture2.Width / 2, Picture2.Height / 2, _
 Picture1.hdc, 0, 0, Picture1.Width, Picture1.Height, SRCCOPY)

End Sub


Take1  2003-09-18 05:28:16  No: 108728

すいません。

>縮小表示するにはどうすれば

なのでImageコントロールをつかって
StretchプロパティをTrueにして
画像を読み込む・・はしました?
上記はそれと同レベルです。
それ以上は私はわかりません。m(_ _)m


たかみちえ  URL  2003-09-18 18:11:42  No: 108729

> 出来るだけ何が写っているか分かるように
  ということですから、Streachじゃあ不足そうです…。
  IrfanViewなどのソフトみたいに、補完して縮小したいんですよね?

  以前、IrfanViewで、スクリーンショットとしてとったフォームを、アイコンサイズに縮小したことがありますけど、
高品質なリサンプルだと、なるほど確かに、わからないものではありません。
対してリサイズ(恐らくStreachBltと同等)だと、ちょっと厳しかったです。
  これから考えるに、IrfanViewのりサンプルくらいのものが実装できれば、問題ないと思います。

  わたしはよく知らないので、どうともいえませんけど、
IrfanViewなどで使われてる用語(リサンプルとか、ベルフィルターとか)で、Googleとかを検索してみては?


魔界の仮面弁士  2003-09-18 20:35:50  No: 108730

GDI+を利用して、画像を拡大/縮小表示すれば、その際の補間方法として、

・Default
・Low
・High
・NearestNeighbor
・Bilinear
・Bicubic
・HighQualityBilinear
・HighQualityBicubic

を選べるようです。

ニアレストネイバー法
  単純に元の画像を水増し(拡大)、間引き(縮小)する方式。
  ジャギーが目立ちやすく、階調のある画像のリサイズにはむいていません。
  PaintPictureが利用しているのは、おそらく、この方法でしょう。

バイリニア法
  双一次補間法とも呼ばれます。
  元の画像の周辺4ピクセルの画像を数学的に算出して拡大、縮小する手法です。

バイキュービック法
  双三次補間法とも呼ばれます。
  元の画像の周辺16ピクセルの画像を数学的に算出して拡大、縮小します。
  バイリニア法よりも計算が複雑になるため、処理時間はよけいにかかりますが、
  その分精度が高く階調のある画像のリサイズにむいています。

それぞれの画質の違いは、下記を参照してください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/023resize/resize.html

なお、GDI+に関しては、.NET関係の資料ばかりが目立っており、
VB6から扱うための情報がすこぶる不足しているようですが、それ自体は
.NET専用というわけではないので、VB6からも利用できるかと思います。

# とはいえ私自身は、GDI+ や DirectDraw には詳しくないので、
# 具体的なサンプルを提示する事はできませんが…。m(_ _)m


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

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






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