OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

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

  • すぐに回答を!
  • 質問No.220284
  • 閲覧数252
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 62% (5/8)

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

回答 (全4件)

  • 回答No.1

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

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

お礼率 62% (5/8)

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


  • 回答No.2
レベル12

ベストアンサー率 40% (230/562)

内部で使われてる拡大縮小機能は、近くにある色と同じ色を使うだけなので、とても見られたものではありません。 画像データを配列として得て、ちゃんとした演算をしなければならないでしょう。 ...続きを読む
内部で使われてる拡大縮小機能は、近くにある色と同じ色を使うだけなので、とても見られたものではありません。
画像データを配列として得て、ちゃんとした演算をしなければならないでしょう。
お礼コメント
holly-tree

お礼率 62% (5/8)

うーん。私って、初心者には難しいことをしようとしていたんですね。
今まで画像処理関係はしたことなくって。
もう少し勉強してみます。
回答ありがとうございました。
投稿日時 - 2002-02-19 20:40:42
  • 回答No.3
レベル9

ベストアンサー率 33% (33/98)

StretchBlt は非常に単純な実装なので、綺麗にしたければ、自前で書かないといけなかったと思います。 # DLLやActiveXなんかも公開されている方がおられると思います。 >きれいに縮小表示 ネット上にも色々解説があります。 余裕がないので、概要だけ書くと、 縮小後の各点のピクセルは、その点に対応する縮小前のピクセルの領域の平均とします。 # もちろん、ピクセル全体が含まれないと ...続きを読む
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を書いておきます。
お礼コメント
holly-tree

お礼率 62% (5/8)

画像関係の知識不足なので、レスの内容も難しーって感じなのですが・・・。
高い本は買えないので(^^;)もう少しネットで調べてみようと思います。
余裕がないとか言いながらすごくいっぱい書いていただきましてありがとうございました。
投稿日時 - 2002-02-19 20:49:10
  • 回答No.4
レベル12

ベストアンサー率 65% (276/422)

Private Declare Function SetStretchBltMode Lib "gdi32" _       (ByVal hdc As Long, ByVal nStretchMode As Long) As Long Private Const COLORONCOLOR = 3    SetStretchBltMode Printer.hdc, CO ...続きを読む
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

お礼率 62% (5/8)

SetStretchBltModeで「COLORONCOLOR」に設定してみましたが
他の値(1,2,4)に設定したときとそんなに変わりませんでした。
やっぱり自前で作成するしかないんでしょうか。
投稿日時 - 2002-02-28 17:57:57
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ