6

C#のb.Heightおよびb.Widthプロパティとb.Horizo​​ntalResolutionおよびb.VerticalResolutionの違いは何ですか?

Bitmap b = new Bitmap(@"foo.bmp");

私のサンプルでは、​​Height = 65、Width = 375、Horizo​​ntalResolution = VerticalResolution=150.01239です。MSDNによると、高さと幅はピクセル単位ですが、Horizo​​ntalResolutionとVerticalResolutionは1インチあたりのピクセル数です。それで、それは、たとえば、この画像がスキャナーからスキャンされたdpiであることを意味しますか?それともこれは何か他のものですか?

質問のコンテキストは次のとおりです。署名をスキャンして、フォームの画像としてasp.netページに表示したいと思います。フォームは、シガンチャー用のスペースが明確に定義された標準的な政府フォームです。画像をスキャンして、ブラウザで表示したり、Webページを印刷したりするときに、画像がぼやけることなく表示されるようにするには、どのような考慮事項を考慮する必要がありますか。

私が理解していないのは、すべての画像形式が(a)ブラウザが画像タグに表示/サイズ変更する画像のピクセルサイズ(高さ/幅)と(b)プリンタが使用する他のdpiに相当するものを保存しているかどうかです印刷する?そうでない場合、印刷された紙の画像サイズを決定するものは何ですか?

4

2 に答える 2

13

1インチあたりのドット数のプロパティは、画像が作成時と同じ物理サイズで出力デバイスに表示されるようにする場合に重要です。最良の例は、Microsoftペイントで作成した画像です。あなたがそれに取り組んでいる間、あなたはあなたのモニターを使います。これは通常、1インチあたり96ピクセルの解像度です。したがって、960 x 960の画像は、モニター上で(おおよそ)10x10インチの画像として表示されます。

今、あなたはそれを印刷します。プリンタは高解像度デバイスであり、1インチあたり600ドットはかなり正常です。つまり、960 x 960ピクセルの画像は、紙に960/600 = 1.6x1.6インチの画像として印刷されます。あなたの素敵なデザインが切手に変わりました。

明らかにそれは望ましくありません。モニターと同じように紙の上で画像を再スケーリングする必要があります。画像の1インチあたりのドット数プロパティを使用すると、これを実行できます。Image.Horizo​​ntal / VerticalResolutionプロパティは96を示し、プリンターのGraphics.DpiX / Yは600を示します。同じサイズの画像を取得するには、600/96で再スケーリングする必要があります。

副作用があることに注意してください。再スケーリングにより、Microsoftペイントで描画した1ピクセルごとに、紙に6x6のブロブが作成されます。ただし、紙のピクセルは非常に小さいため、画像は同じように見える可能性があります。写真のように、画像の遷移がスムーズである限り。うまく機能しないのはテキスト、特にアンチエイリアスの種類です。そうでなければ、スクリーンショットがプリンター用に生成されたレポートと比較して非常に見栄えが悪いのはそのためです。

于 2011-06-02T23:36:31.910 に答える
0

Vertical/Horizo​​ntalResolution プロパティは、このイメージが使用するように定義されている 1 インチあたりのピクセル数を示します。だからここにいくつかの例があります..

100 px x 100 px @ 50x50 ppi の画像は、印刷時に 2 インチ x 2 インチの画像を消費することを意味します。(100/50)

数値を使用すると、375 x 65 @ 150.01239 = ~2.5 x 0.43 インチになります。

平均的なコンピューター モニターは 72 ppi に設定されていますが、これは保証されません。

于 2011-06-02T23:11:03.797 に答える