9

可能であれば(パフォーマンス上の理由から)ディスクを開かずに、ディスク上の画像の高さ/幅を見つけたいと思います。

画像の Windows プロパティ ペインには、幅、高さ、ビット深度などの情報が含まれているため、ファイルのどこかにメタデータを保存していると思われます。この情報にアクセスするにはどうすればよいですか?

4

7 に答える 7

5

System.Drawing.Image クラスを使用します。

        Image img = Image.FromFile(fileName);
        ImageFormat format = img.RawFormat;
        Console.WriteLine("Image Type : "+format.ToString());
        Console.WriteLine("Image width : "+img.Width);
        Console.WriteLine("Image height : "+img.Height);
        Console.WriteLine("Image resolution : "+(img.VerticalResolution*img.HorizontalResolution));

        Console.WriteLine("Image Pixel depth : "+Image.GetPixelFormatSize(img.PixelFormat));
        Console.WriteLine("Image Creation Date : "+creation.ToString("yyyy-MM-dd"));
        Console.WriteLine("Image Creation Time : "+creation.ToString("hh:mm:ss"));
        Console.WriteLine("Image Modification Date : "+modify.ToString("yyyy-MM-dd"));
        Console.WriteLine("Image Modification Time : "+modify.ToString("hh:mm:ss"));
于 2010-12-24T04:39:04.590 に答える
4

画像から EXIF 情報を読み取る方法については、次のようないくつかのスタック オーバーフローの質問があります。 C# を使用してファイルから EXIF データを取得する方法

于 2009-07-28T18:19:09.163 に答える
4

これを実現する最も簡単な方法は、画像が正方形であると仮定して、ファイル サイズをバイト単位で取得し、平方根を取得することです。これが幅と高さになります。

256 bytes = 16px x 16px

:-)

または、このコードプレックス ライブラリを使用して画像の EXIF 情報を読み取ってみることができます

于 2009-07-28T18:18:01.037 に答える
2

Windows は、(この) メタデータをファイル システムの特別な場所に保存しません。[プロパティ] ウィンドウは、単にイメージ ファイル自体からそれらを読み取ります。

イメージ全体をロードせずに、イメージからメタデータだけを読み取る機能を .NET が提供しているとは思いません。扱う画像フォーマットの数が限られている場合 (JPEG、PNG、GIF など)、画像ヘッダーからサイズを読み取るのは難しくありません。

一方、多くの画像形式を処理する必要がある場合は、Unixfileユーティリティのソース コードを参照してください。非常に多くの異なる画像形式のサイズを検出することができ、起動が非常に高速です。

于 2009-07-28T18:21:11.403 に答える
2

画像の幅と高さ (基本的にはメタデータ) を取得するには、ファイル開いて、ある種のヘッダー情報を解析し、その方法で必要なものを取得する必要があります。

すべてのカラー/ビットマップ情報を読み取る必要はなく、ヘッダーのみを読み取る必要があります。

これは、Windows が実際にアイコンを実行せずにアプリケーション ファイルからアイコンをロードできるのと同じ方法です。

于 2009-07-28T18:22:05.180 に答える
2

この質問を確認してください:

于 2009-07-28T18:22:57.937 に答える
0

Windows エクスプローラーによって表示されるプロパティを読み取るには、Microsoft Shell Controls and Automationコンポーネントを使用できます。これの利点は、サード パーティのライブラリ (COM オブジェクトが既に存在する) や、画像ヘッダーを解析するための追加のコードが必要なく、さまざまな形式で動作することです。

サンプル コードは、関連する質問への回答にあります。

于 2009-07-28T18:47:41.897 に答える