C#에서 파일의 이미지 유효성 검사
파일에서 이미지를 로드하는 것은 프로그래밍의 일반적인 작업입니다. 그러나 로드된 이미지가 유효한지 확인하는 것은 어려울 수 있으며, 특히 신뢰할 수 없는 소스를 처리할 때 더욱 그렇습니다. 이 기사에서는 파일에서 이미지를 완전히 읽기 전에 이미지를 검증하여 잠재적인 오류를 방지하는 솔루션을 제시합니다.
이미지의 유효성을 검사하려면 이미지의 형식과 크기에 대한 정보가 포함된 헤더를 검사하면 됩니다. 다양한 이미지 형식에는 고유한 헤더가 있으며 헤더 바이트를 알려진 패턴과 비교하여 이미지 유형을 결정할 수 있습니다.
다음은 주어진 파일 경로 또는 스트림에 따라 이미지의 유효성을 검사하는 C#의 예제 함수입니다.
public static bool IsValidImage(string fileName) { try { using (var fileStream = File.OpenRead(fileName)) { return IsValidImage(fileStream); } } catch (Exception ex) { // Handle exceptions here, e.g., FileNotFoundException return false; } } public static bool IsValidImage(Stream imageStream) { // Read the header bytes from the stream byte[] headerBytes = new byte[4]; imageStream.Position = 0; imageStream.Read(headerBytes, 0, headerBytes.Length); // Compare the header bytes to known patterns if (headerBytes.SequenceEqual(Encoding.ASCII.GetBytes("BM"))) { return true; // BMP } else if (headerBytes.SequenceEqual(Encoding.ASCII.GetBytes("GIF"))) { return true; // GIF } else if (headerBytes.SequenceEqual(new byte[] { 137, 80, 78, 71 })) { return true; // PNG } else if (headerBytes.SequenceEqual(new byte[] { 73, 73, 42 }) || headerBytes.SequenceEqual(new byte[] { 77, 77, 42 })) { return true; // TIFF } else if (headerBytes.SequenceEqual(new byte[] { 255, 216, 255, 224 }) || headerBytes.SequenceEqual(new byte[] { 255, 216, 255, 225 })) { return true; // JPEG } else { return false; // Unknown format } }
이 코드는 이미지의 헤더 바이트를 검사하고 이를 다양한 이미지 형식과 관련된 알려진 패턴과 비교합니다. 헤더가 알려진 패턴과 일치하면 함수는 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
위 내용은 전체 읽기 전에 C#에서 이미지 파일의 유효성을 어떻게 검사할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!