코어 API

코어 API

Aspose.Imaging .NET의 전체 공개 표면에 대한 FOSS는 세 가지 클래스입니다: ImageProbe (정적 파사드), ImageInfo (결과 값), 그리고 ImageFormat (포맷 열거형). 이 페이지에서는 각 기능별 투어를 넘어 계약으로서 이들이 어떻게 결합되는지를 다룹니다. 기능 및 특성.


세 클래스 계약

  • ImageProbe — 정적, 무상태. 모든 호출은 독립적이며; 구성하거나 해제할 것이 없습니다.
  • ImageInfo — 봉인된, 불변. 다섯 개 속성 모두 (Format, Width, Height, BitDepth, FrameCount)는 생성된 후 읽기 전용입니다.
  • ImageFormat — 인식된 각 형식마다 하나의 값을 갖는 열거형이며, 추가로 Unknown.
using Aspose.Imaging.Foss;

var info = ImageProbe.ProbeFile("photo.jpg");
ImageFormat format = info.Format;   // always set
int? width = info.Width;            // set only when the format's header carries it

직접 ImageInfo 생성하기

ImageInfo의 생성자는 public이며 — format만 필요하고, 다른 모든 매개변수는 null로 기본값이 지정됩니다. 이는 실제 파일을 조사하지 않고도 대체 결과가 필요한 단위 테스트에 유용합니다:

using Aspose.Imaging.Foss;

// Fake a PNG result for a test double, with no dimensions
var fakeInfo = new ImageInfo(ImageFormat.Png);

// Fake a fully-populated result
var fullInfo = new ImageInfo(ImageFormat.Gif, width: 64, height: 48, bitDepth: 8, frameCount: 3);

이에 해당하는 방법이 없습니다 mutate an ImageInfo 구성 후 — 모든 속성이 읽기 전용이므로, 탐색되었거나 생성된 인스턴스를 방어적 복사 없이도 자유롭게 전달하고 캐시해도 안전합니다.


올바른 오버로드 선택

Overload다음과 같은 경우에 사용
ImageProbe.ProbeFile(path)파일 경로가 있고 전체 ImageInfo를 원합니다
ImageProbe.Probe(stream)이미 열려 있는 Stream(시크 가능한지 여부와 관계없이)가 있고 전체 ImageInfo를 원합니다
ImageProbe.Probe(data)이미 메모리에 바이트가 있고 전체 ImageInfo을(를) 원합니다.
ImageProbe.DetectFormat(stream) / (data)당신은 ImageFormat에 따라 분기만 하면 됩니다 — 포맷 시그니처를 넘어선 헤더 파싱은 건너뛰세요.

ProbeFile가 파일을 직접 열고 읽습니다 — Probe(stream)를 호출하기 위해 먼저 FileStream를 열 필요가 없습니다.


디렉터리 일괄 탐색

ImageProbe이(가) 예외를 전혀 발생시키지 않기 때문에, 디렉터리 스캔은 파일당 try/catch 없이도 빡빡한 루프에서 호출할 수 있습니다:

using Aspose.Imaging.Foss;

foreach (var path in Directory.GetFiles("incoming"))
{
    var info = ImageProbe.ProbeFile(path);

    if (info.Format == ImageFormat.Unknown)
    {
        Console.WriteLine($"{path}: not a recognized image format, skipping");
        continue;
    }

    Console.WriteLine($"{path}: {info.Format} {info.Width}x{info.Height}");
}

헤더가 11가지 인식된 포맷 중 하나와 일치하지 않는 모든 파일은 예외를 발생시키는 대신 ImageFormat.Unknown으로 해석됩니다 — 위 루프는 절대 catch 블록이 필요하지 않습니다.


예외 미발생 계약

이는 우연한 동작이 아니라 — API 계약의 의도적인 부분입니다. 인식된 포맷의 헤더가 파싱 도중 잘리거나 형식이 잘못되었더라도, ImageProbe은 여전히 ImageInfo을 반환하고, Format는 인식된 포맷으로 설정됩니다; 호출자에게 파싱 예외를 전파하지 않습니다. 보장되는 것은 오직 Format뿐이며 — 감지된 포맷에 관계없이 다른 모든 속성을 선택 사항으로 간주하십시오.


일반 문제

문제원인해결책
구성된 ImageInfo이(가) 실제 프로브 결과와 일치하지 않습니다.수동으로 만든 인스턴스는 필드 간 일관성을 검증하지 않습니다수동 구성을 테스트 더블에만 사용하고, 실제 파일을 탐색하는 대체 수단으로 사용하지 마세요
DetectFormat이면 충분한데 Probe를 호출하고 있습니다형식만 필요할 때 불필요한 헤더 파싱이 수행됩니다한 번도 Width/Height/BitDepth/FrameCount를 읽지 않을 경우 DetectFormat를 사용하세요
지원될 것으로 예상되는 파일에 대한 Unknown 형식헤더가 11개의 인식된 서명 중 어느 것과도 일치하지 않거나, 파일이 전혀 다른 형식입니다파일을 다음과 대조하여 확인하세요 지원되는 포맷 목록

FAQ

제가 ImageInfo 또는 ImageProbe를 서브클래스화할 수 있나요?

아니요. ImageInfo는 sealed이고 ImageProbe는 static입니다 — 두 경우 모두 서브클래싱이나 상속을 통한 인스턴스화를 위해 설계되지 않았습니다.

ImageProbe는 스레드 안전합니까?

ImageProbe는 호출 사이에 변할 수 있는 상태를 보유하지 않습니다 — Probe, ProbeFile, 또는 DetectFormat에 대한 각 호출은 독립적이며, 여러 스레드에서 동시에 호출해도 안전합니다.

무언가를 해제해야 합니까?

아니요. ImageProbe는 자체적으로 IDisposable 리소스를 가지고 있지 않습니다. 직접 연 Stream를 전달한 경우, 해당 스트림을 해제할 책임은 사용자에게 남아 있습니다 — Probe(stream)는 이를 닫지 않습니다.


API Reference 요약

클래스 / 메서드설명
ImageProbe.ProbeFile(path)경로를 통해 파일을 탐색
ImageProbe.Probe(stream)탐색 Stream
ImageProbe.Probe(data)탐색 byte[]
ImageProbe.DetectFormat(stream)포맷만, Stream에서
ImageProbe.DetectFormat(data)형식만, byte[]에서
ImageInfo(format, width, height, bitDepth, frameCount)공개 생성자 — format만 필요합니다
ImageInfo.Format / .Width / .Height / .BitDepth / .FrameCount읽기 전용 결과 속성
ImageFormat열거형: Unknown, Png, Jpeg, Gif, Bmp, WebP, Ico, Tiff, Psd, Emf, Wmf, Dicom

참조

 한국어