• 締切済み

画像の縮小をすると粗くなってしまいます

640×480pixelのピクチャボックスに ビットマップファイルを読み込み print メソッドで文字を出力してから 120×120pixelのピクチャボックスに StretchBlt を使用して縮小表示していますが、 画像が粗くなり文字が読み取れなくなって困っています。 すっきりきれいに縮小表示する方法があれば教えてください。 よろしくお願いします。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

Private Declare Function SetStretchBltMode Lib "gdi32" _       (ByVal hdc As Long, ByVal nStretchMode As Long) As Long Private Const COLORONCOLOR = 3    SetStretchBltMode Printer.hdc, COLORONCOLOR  '←これを追加    StretchBlt hoge,hoge・・・           '←既存のStretchBlt処理

holly-tree
質問者

補足

SetStretchBltModeで「COLORONCOLOR」に設定してみましたが 他の値(1,2,4)に設定したときとそんなに変わりませんでした。 やっぱり自前で作成するしかないんでしょうか。

すると、全ての回答が全文表示されます。
  • sssohei
  • ベストアンサー率33% (33/98)
回答No.3

StretchBlt は非常に単純な実装なので、綺麗にしたければ、自前で書かないといけなかったと思います。 # DLLやActiveXなんかも公開されている方がおられると思います。 >きれいに縮小表示 ネット上にも色々解説があります。 余裕がないので、概要だけ書くと、 縮小後の各点のピクセルは、その点に対応する縮小前のピクセルの領域の平均とします。 # もちろん、ピクセル全体が含まれないときはその比率を考慮します。 例えば、 12345678 の幅を5(ABCDE)にするのであれば このとき、各A~Fは A = (1*1.0 + 2*0.4    )/1.4 = 1.285714 B = (2*0.6 + 3*0.8    )/1.4 = 2.571429 C = (3*0.2 + 4*1.0 + 5*0.2)/1.4 = 4.0 D = (6*0.8 + 7*0.6    )/1.4 = 6.428571 E = (7*0.4 + 8*1.0    )/1.4 = 7.714286 ∴ 13468の様になります。(整数部が奇数なら四捨五入、偶数なら五捨六入(?)でしたっけ? API使ったりしないと遅いので、詳しくは、VB関係のページを探してみてください^^; 書籍であれば、「VisualBasic 画像処理プログラミング2D編」(ソフトバンク)という本などに詳しいことが書かれています。高いのですが、、、 最近すっかりVBをご無沙汰しているので、良いページを紹介出来ません^^; 本題とは違うのですが、参考になりそうなページのURLを書いておきます。

参考URL:
http://www06.u-page.so-net.ne.jp/qc4/shige-3p/
holly-tree
質問者

お礼

画像関係の知識不足なので、レスの内容も難しーって感じなのですが・・・。 高い本は買えないので(^^;)もう少しネットで調べてみようと思います。 余裕がないとか言いながらすごくいっぱい書いていただきましてありがとうございました。

すると、全ての回答が全文表示されます。
  • haporun
  • ベストアンサー率40% (230/562)
回答No.2

内部で使われてる拡大縮小機能は、近くにある色と同じ色を使うだけなので、とても見られたものではありません。 画像データを配列として得て、ちゃんとした演算をしなければならないでしょう。

holly-tree
質問者

お礼

うーん。私って、初心者には難しいことをしようとしていたんですね。 今まで画像処理関係はしたことなくって。 もう少し勉強してみます。 回答ありがとうございました。

すると、全ての回答が全文表示されます。
noname#5746
noname#5746
回答No.1

こんばんは♪ プログラミング > Visual Basicについては全くの素人なので的外れなアドバイスかもしれません。 縮小するためのソフト(画像拡縮)を使うのはどうなのでしょうか(^^ゞ

参考URL:
http://www.vector.co.jp/soft/win95/art/se131666.html
holly-tree
質問者

補足

URL見てみましたが私がしたいのはプログラム内での縮小なのでちょっと違うかったかも。 でも、素早いレスありがとうございました。 初投稿だったのでうれしかったです。

すると、全ての回答が全文表示されます。

関連するQ&A