.NET에서 Aspose.Imaging FOSS 코어 API을(를) 사용하는 방법

.NET에서 Aspose.Imaging FOSS 코어 API을(를) 사용하는 방법

Aspose.Imaging FOSS for .NET의 공개 인터페이스는 세 개의 클래스: ImageProbe, ImageInfo, ImageFormat 로 구성됩니다. 이 가이드는 패키지를 설치하고 세 클래스를 모두 함께 사용하여 형식을 감지하고 파일, 스트림, 바이트 배열에서 헤더 메타데이터를 읽는 방법을 안내합니다.

단계별 가이드

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;

Step 3: 경로별 파일 검사

ImageProbe.ProbeFile은 파일 헤더를 최소한으로 읽어 ImageInfo 결과를 채웁니다 — 픽셀 데이터를 절대 디코딩하지 않습니다:

var info = ImageProbe.ProbeFile("photo.jpg");
Console.WriteLine($"{info.Format}: {info.Width}x{info.Height}, {info.BitDepth}-bit");

Step 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)은 탐색 가능한 스트림과 탐색 불가능한 스트림 모두에서 작동합니다.


Step 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의 생성자는 공개되어 있으며 format만 필요합니다 — 테스트 더블을 만들 때 유용합니다: new ImageInfo(ImageFormat.Png, width: 64, height: 48).

특별히 해제해야 할 것이 있나요?

No. ImageProbe는 자체 IDisposable 리소스를 보유하고 있지 않습니다. 직접 연 Stream를 전달하면, 그 처리는 여전히 귀하의 책임입니다.

참조

 한국어