0

多数の画像を処理する .net 3.5 アプリケーションがあります。画像の拡張子、画像の高さと幅、および PPI が正しいことを確認する必要があります。イメージ全体を .net イメージまたはビットマップにロードしたくありません。これには時間がかかり、リソースを大量に消費します。サードパーティのプラグインや dll を使用することはできません。もちろん、昨日実行する必要があります。

そのため、ファイルの最初のバイトを読み取り、「マジック」番号をチェックして画像拡張子が一致することを確認し、次に、処理する必要があるほとんどの画像タイプの画像の高さと幅を確認しています。これははるかに高速で、リソースの消費が少なくなります。いくつかの画像タイプから PPI を読み取るのに少し助けが必要でした.

BMP、JPG、GIF、および PNG PPI の読み取りにサポートが必要です。

  • オフセットxxにあるようなものを探しています。

TIF、EPS、および PSD 高さ、幅、および PPI を読み取るのに助けが必要です。

  • 私は Eps ファイルと Psd ファイルにかなりこだわっており、何でも役に立ちます。

  • はい、私は tiflib について知っています。見栄えがよく、必要以上のものです。高さ、幅、および PPI のみを処理する軽量バージョンが最適です。私がしなければならない場合は、これを行うことができますが、準備ができている誰かが持っていることを願っています:-)

4

2 に答える 2

4

すべてのバイト位置は、最初のバイトが位置 0 ではなく位置 1 にあると想定しています。

PNG ファイル幅: バイト 9 ~ 12、高さ: バイト 13 ~ 16、PPI: 112 72 89 115 (10 進値) の 4 バイト署名を探し、バイト 1 ~ 4 (以下) には単位あたりの X ピクセルが含まれ、バイト 5 -8 には単位あたりの Y ピクセルが含まれ、バイト 9 には単位指定子 (0 = 不明、1 = メートル) が含まれます。PPI はオプションのチャンクに格納され、すべての PNG に存在するとは限りません。

http://www.libpng.org/pub/png/spec/iso/index-object.htmまたはhttp://en.wikipedia.org/wiki/PNG_file_format

BMP ファイル幅: バイト 18 から 21、高さ: バイト 22 から 25、PPI: バイト 38 から 41 には 1 メートルあたりの X ピクセルが含まれ、バイト 42 から 45 には 1 メートルあたりの Y ピクセルが含まれます。

http://en.wikipedia.org/wiki/BMP_file_format

JPG ファイルJPEG は圧縮を指し、JFIF は実際のファイル ストレージ形式です。幅: 、高さ: 、PPI: バイト 11 ~ 12 には単位あたりの X ピクセルが含まれ、バイト 13 ~ 14 には単位あたりの Y ピクセルが含まれます。バイト 10 には単位が含まれます (0 = 単位なし、1 = ピクセル/インチ、2 = ピクセル/cm)。

http://en.wikipedia.org/wiki/JPEG_File_Interchange_Formatおよびhttp://www.ecma-international.org/publications/files/ECMA-TR/TR-098.pdf

GIF ファイル幅: バイト 7 ~ 8、高さ: バイト 9 ~ 10、PPI: GIF ファイルには、ピクセル密度情報は含まれません。

http://en.wikipedia.org/wiki/Graphics_Interchange_Format

あなたが要求した情報が保存されているかどうか、またはどこに保存されているかを判断するには、その形式に関する特定の知識が必要なため、他の形式へのリンクを提供しました。

http://partners.adobe.com/public/developer/tiff/index.html

http://en.wikipedia.org/wiki/Portable_Document_Formatおよびhttp://www.adobe.com/devnet/pdf/pdf_reference_archive.html

http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/

于 2013-01-29T22:45:05.927 に答える
-1

独自のマルチフォーマットイメージパーサーの作成とデバッグに何百時間もの開発時間を費やすのではなく、既存のメソッドを最適化する方法を検討することをお勧めします。簡単な画像形式もあれば、難しい画像形式もあります。本当に難しいものもあります。前述のように、一部の「フォーマット」は他のフォーマットの単なるコンテナです。

ここにいくつかの提案があります:

Windowsフォーム(c#.net)アプリでディスクからの画像の読み込みを高速化

http://www.vcskicks.com/fast-image-processing.php

JPG画像の1インチあたりのピクセル数の値を見つけるにはどうすればよいですか?

于 2013-01-28T22:41:52.373 に答える