>백엔드 개발 >C++ >전체 읽기 전에 C#에서 이미지 파일의 유효성을 어떻게 검사할 수 있나요?

전체 읽기 전에 C#에서 이미지 파일의 유효성을 어떻게 검사할 수 있나요?

Patricia Arquette
Patricia Arquette원래의
2024-12-30 14:35:10666검색

How Can I Validate an Image File in C# Before Full Reading?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.