.NET で Aspose.Imaging FOSS Core API を操作する方法
Aspose.Imaging FOSS for .NET の公開インターフェースは、ImageProbe、ImageInfo、ImageFormat の3つのクラスで構成されています。このガイドでは、パッケージのインストール方法と、3つすべてを組み合わせてフォーマットを検出し、ファイル、ストリーム、バイト配列からヘッダー メタデータを読み取る方法を解説します。
ステップバイステップ ガイド
ステップ 1: パッケージをインストールする
git clone https://github.com/aspose-imaging-foss/Aspose.Imaging-FOSS-for-.NET.git
cd Aspose.Imaging-FOSS-for-.NET
dotnet buildこのパッケージは net8.0 と netstandard2.0 を対象としており、外部ランタイム依存関係はゼロです。
ステップ 2: 名前空間をインポートする
単一のusingディレクティブを追加します — これによりImageProbe、ImageInfo、ImageFormat、全体のAPIサーフェスが公開されるため、他にインポートすべきものはありません:
using Aspose.Imaging.Foss;ステップ 3: パスでファイルをプローブする
ImageProbe.ProbeFileはファイルヘッダーを最低限だけ読み取り、ImageInfo結果を生成します — ピクセルデータは決してデコードしません:
var info = ImageProbe.ProbeFile("photo.jpg");
Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}, {info.BitDepth}-bit");ステップ 4: ストリームまたはバイト配列をプローブする
画像がすでにメモリ上にある、またはストリーム(アップロードやネットワーク応答)から取得された場合は、最初に一時ファイルに書き込む代わりに、それらを直接受け取るオーバーロードを使用してください:
byte[] bytes = File.ReadAllBytes("photo.jpg");
var infoFromBytes = ImageProbe.Probe(bytes);
using var stream = File.OpenRead("photo.jpg");
var infoFromStream = ImageProbe.Probe(stream);Probe(stream)はシーク可能ストリームとシーク不可能ストリームの両方で動作します。
ステップ 5: フォーマットだけが必要なときはDetectFormatを使用する
フォーマットで分岐するだけで、サイズ、ビット深度、フレーム数が不要な場合、DetectFormatはヘッダー解析の残りをスキップします:
var format = ImageProbe.DetectFormat(bytes);
if (format == ImageFormat.Dicom)
{
// route to DICOM-specific handling
}ステップ 6: Nullable ImageInfo フィールドを安全に読み取る
Width、Height、BitDepth、および FrameCount は nullable です — 検出されたフォーマットのヘッダーに実際にその値が含まれている場合にのみ設定されます。Format はヘッダーが認識されると必ず設定される唯一のフィールドです:
var info = ImageProbe.ProbeFile("scan.dcm");
if (info.Width.HasValue && info.Height.HasValue)
{
Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}");
}
else
{
Console.WriteLine($"{info.Format}: dimensions not available in this header");
}一般的な問題と対策
フォーマットは次のように表示されます ImageFormat.Unknown. ファイルのヘッダーが、認識された 11 種類のフォーマット (PNG、JPEG、GIF、BMP、WebP、ICO、TIFF、PSD、EMF、WMF、DICOM) のいずれにも一致しません。ファイルが本当にこれらのフォーマットのいずれかであることを確認してください — ImageProbe 未認識のヘッダーに対して例外を投げることはなく、報告します Unknown 代わりに。
Width/Height are null たとえ Format が設定されています。 確認してください Format 最初に、残りはオプションとして扱います。
Calling Probe when DetectFormat それでいいです。 Probe and ProbeFile 完全なヘッダーを解析します; DetectFormat フォーマットを識別するのに十分なだけを読み取ります。使用してください DetectFormat 読まない場合は Width/Height/BitDepth/FrameCount.
デコードされたピクセルデータを期待しています。 ImageProbe 画像コンテンツをデコード、レンダリング、変換することはありません — ヘッダーメタデータのみを読み取ります。デコードやピクセルレベルの操作には、商用 Aspose.Imaging SDK が必要です。
よくある質問
切り詰められたまたは破損したファイルをプローブした場合、どうなりますか?
ImageProbe は不正な形式や切り詰められた入力で例外を投げません。部分的な ImageInfo を返します — ヘッダーのフォーマットマーカーが認識された場合は、たとえファイルの残りが途中で切れていても Format が設定されます。
ImageProbe はスレッドセーフですか?
はい。ImageProbe は静的で、呼び出し間で可変状態を保持しないため、複数スレッドからの同時呼び出しは安全です。
実際のファイルをプローブせずに、直接 ImageInfo を構築できますか?
はい。ImageInfo のコンストラクタは public で、format だけが必須です — テストダブルを作成する際に便利です: new ImageInfo(ImageFormat.Png, width: 64, height: 48)。
何か破棄する必要がありますか?
No. ImageProbe は独自の IDisposable リソースを保持していません。自分で開いた Stream を渡す場合、処分の責任は引き続きあなたにあります。