DOBON.NET どぼん!のVB道掲示板(プログラム)過去ログ

スキャニングした画像データを等倍で画面に表示して印刷時も等倍で印刷したい

2回目の投稿になります
ずうずうしいですが2つほど質問をさせていただきたいと思います。

一つ目は
スキャニングした画像データ(.jpg .bmp等)を画面上で再現するときスキャニングした元の画像のサイズと同じサイズで表示させたいのですが、ピクセルとDPIの関係がわかれば分かるのでしょうか?
それともピクセルのサイズの取得は出来ますので他に元画像のサイズを表すプロパティでもあるのでしょうか?

二つ目は
印刷時にスキャニングした元の画像のサイズと同じサイズで印刷したいのですが
これは一つ目の質問したことが分かれば出来るのでしょうか?
印刷に関してはOSに付属のイメージングを使って.bmpファイルを印刷したとき
等倍で印刷できましたので方法はあると思います。
...って出来ない奴が言うな(一人突っ込み)

以上二つ質問してしまいましたがご教授していただきたいと思います。

しかしこの画像とか印刷は首を突っ込めば突っ込むほどややこしいです、
ピクセルだのDPIだの画素だの線数だの..
>スキャニングした画像データ(.jpg .bmp等)を画面上で再現するときスキャニングした元の画像のサイズと同じサイズで表示させたいのですが、ピクセルとDPIの関係がわかれば分かるのでしょうか?
>それともピクセルのサイズの取得は出来ますので他に元画像のサイズを表すプロパティでもあるのでしょうか?

まず、「自動スケーリング」というのがありますので、何も考えなくてもスケーリングされるようです(実際に試したことがないので分かりませんが)。

ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/_gdiplus_improving_performance_by_avoiding_automatic_scaling_usecsharp.htm

また、ImageオブジェクトのdpiはHorizontalResolutionとVerticalResolutionで、GraphicsオブジェクトのdpiはDpiXとDpiYで取得できるようなので(1インチあたりのピクセル数)、これらを使って計算してもできるのではないでしょうか?

印刷に関しては詳しくありませんが、同様に出来ると思います。
>ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/_gdiplus_improving_performance_by_avoiding_automatic_scaling_usecsharp.htm
>
>また、ImageオブジェクトのdpiはHorizontalResolutionとVerticalResolutionで、GraphicsオブジェクトのdpiはDpiXとDpiYで取得できるようなので(1インチあたりのピクセル数)、これらを使って計算してもできるのではないでしょうか?
>
>印刷に関しては詳しくありませんが、同様に出来ると思います。

また早い回答ありがとうございます。
あったんですね〜よく調べないといけませんね。
これに関してはある程度出来てからご報告したいと思います。
>ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/_gdiplus_improving_performance_by_avoiding_automatic_scaling_usecsharp.htm
>
>また、ImageオブジェクトのdpiはHorizontalResolutionとVerticalResolutionで、GraphicsオブジェクトのdpiはDpiXとDpiYで取得できるようなので(1インチあたりのピクセル数)、これらを使って計算してもできるのではないでしょうか?
>
>印刷に関しては詳しくありませんが、同様に出来ると思います。

また早い回答ありがとうございます。
あったんですね〜よく調べないといけませんね。
これに関してはある程度出来てからご報告したいと思います。
>>ms-help://MS.VSCC/MS.MSDNVS.1041/cpguide/html/_gdiplus_improving_performance_by_avoiding_automatic_scaling_usecsharp.htm
>>
>>また、ImageオブジェクトのdpiはHorizontalResolutionとVerticalResolutionで、GraphicsオブジェクトのdpiはDpiXとDpiYで取得できるようなので(1インチあたりのピクセル数)、これらを使って計算してもできるのではないでしょうか?
>>
>>印刷に関しては詳しくありませんが、同様に出来ると思います。
>
>また早い回答ありがとうございます。
>あったんですね〜よく調べないといけませんね。
>これに関してはある程度出来てからご報告したいと思います。

はたまた、要らぬところに乱入!! どぼんさん済みません、荒らしちゃって・・・。

アフロさんの悩みは、恐らく画面やプリンタなどのデバイスの解像度(DPI)を取得する方法を知ったことで既に解消済みとは思うのですが、また要らぬ御節介で補足しますと、
BMPファイルのヘッダには「ドキュメントサイズ」のフィールドがあって、使っているスキャン・ソフトに依っては、そこにスキャナーの解像度から算出した画像の縦横サイズを入れておいてくれることがあるかもしれません。でも、殆どのBMPを見るとそこはゼロが入っていて全然使えないのが実情みたいです。また、JPEGについては知識が無いので分りません(--;
ですので、そもそも画像自身のサイズを得るには、スキャナーの解像度から自分で算出するのが一番確実です。

それから、画面とプリンタの解像度についてですが、プリンタはその解像度を基に出力すれば確実にその通りの寸法で出力できます。
けれども、画面上でのサイズというのは飽くまでも論理的なものです。ディスプレーが15インチか17インチかなんてことはお構い無しです。
それに、600x800, 1024x768など画面モードもいろいろですよね。
画面上での論理サイズを決めているのは実は画面モードを「設定」する画面の「詳細」にある「フォントサイズ」なのです。「小さいフォント」のときと「大きいフォント」のときでは、同じ1024x768のときであっても、画面解像度が96dpiと120dpiというように異なっていると解釈されるのです。
つまり、画面では文字のサイズにすべてを合わせることになっているのです。

だから、「スキャンしたときと等倍で画面に出力」というのはあまり意味が無いのです。

DOBON.NET | プログラミング道 | プログラミング掲示板