가능하면 성능상의 이유로 이미지를 열지 않고 디스크의 높이/너비를 찾고 싶습니다.C에서 확장 이미지 속성 읽기
이미지의 Windows 속성 창에는 너비, 높이, 비트 심도 등의 정보가 들어있어 파일에 메타 데이터를 저장하고 있다고 생각합니다. 이 정보에 어떻게 액세스 할 수 있습니까?
가능하면 성능상의 이유로 이미지를 열지 않고 디스크의 높이/너비를 찾고 싶습니다.C에서 확장 이미지 속성 읽기
이미지의 Windows 속성 창에는 너비, 높이, 비트 심도 등의 정보가 들어있어 파일에 메타 데이터를 저장하고 있다고 생각합니다. 이 정보에 어떻게 액세스 할 수 있습니까?
같은 이미지의 EXIF 정보를 읽는 방법에 대한 몇 가지 유래 질문이 있습니다 How to get the EXIF data from a file using C#
은EXIF 데이터는 파일 내부에 저장되므로 열 필요가 있습니다. OP의 기준을 충족시키지 못하는 것 - OP의 기준을 말하는 것이 아닙니다. –
OP의 요구 사항은 비트 맵 데이터의 이미지와 할당 메모리를 압축 해제하는 것을 건너 뛰고 싶다고 생각합니다. 이 경우 메타 데이터에 액세스하는 것이 좋습니다. –
IMO 그는 실제 이미지 데이터를로드하지 않는다는 것을 의미합니다. 메타 데이터를 열고 읽는 것이 좋습니다. 그렇지 않으면 파일을 검사 할 방법이 없습니다. 실제 병목 현상 병목 현상은 메타 데이터가 아닌 이미지 데이터를로드합니다. – huseyint
가장 쉬운 방법은 이미지가 정사각형이라고 가정하면 파일 크기를 바이트 단위로 가져 와서 제곱근을 취하는 것입니다. 이것은 너비와 높이가 될 것입니다.
256 bytes = 16px x 16px
또는 당신이 사용하여 이미지의 EXIF 정보를 읽어보십시오이 codeplex library
Windows는 메타 데이터를 파일 시스템의 특별한 위치에 저장하지 않습니다. 속성 창은 단순히 이미지 파일 자체에서이를 읽습니다.
.NET은 전체 이미지를로드하지 않고 이미지의 메타 데이터 만 읽을 수있는 기능을 제공한다고 생각하지 않습니다. 제한된 수의 다양한 이미지 형식 (예 : JPEG, PNG 및 GIF) 만 처리하는 경우 이미지 헤더에서 크기를 직접 읽지 않아야합니다.
반면에 많은 이미지 형식을 처리해야하는 경우 Unix file
utility의 소스 코드를 살펴볼 수 있습니다. 그것은 많은, 많은 다른 이미지 포맷의 크기를 감지하는 것을 관리하고, 부팅하는 것이 엄청나게 빠르다.
이미지의 너비와 높이를 가져 오려면 에으로 파일을 열고 헤더 정보를 구문 분석하여 원하는 방식으로 얻으십시오.
모든 색상/비트 맵 정보를 읽을 필요는없고 헤더 만 읽을 수 있습니다.
이것은 Windows에서 실제로 파일을 실행하지 않고 응용 프로그램 파일의 아이콘을로드하는 것과 같은 방법입니다.
당신이 마이크로 소프트 쉘 제어 및 자동화 구성 요소를 사용하여 Windows 탐색기에 표시되는 속성을 읽을 수 있습니다. 이것의 장점은 이미지 헤더를 파싱하기위한 제 3 자 라이브러리 (COM 개체가 이미 있음) 나 추가 코드가 필요없고 다양한 형식으로 작동한다는 것입니다.
샘플 코드는 related question에 대한 답변에서 찾을 수 있습니다.
System.Drawing.Image 클래스를 사용하십시오.
Image img = Image.FromFile(fileName);
ImageFormat format = img.RawFormat;
Console.WriteLine("Image Type : "+format.ToString());
Console.WriteLine("Image width : "+img.Width);
Console.WriteLine("Image height : "+img.Height);
Console.WriteLine("Image resolution : "+(img.VerticalResolution*img.HorizontalResolution));
Console.WriteLine("Image Pixel depth : "+Image.GetPixelFormatSize(img.PixelFormat));
Console.WriteLine("Image Creation Date : "+creation.ToString("yyyy-MM-dd"));
Console.WriteLine("Image Creation Time : "+creation.ToString("hh:mm:ss"));
Console.WriteLine("Image Modification Date : "+modify.ToString("yyyy-MM-dd"));
Console.WriteLine("Image Modification Time : "+modify.ToString("hh:mm:ss"));
가능한 [C#을 사용하여 파일에서 EXIF 데이터를 가져 오는 방법] (http : // stackoverflow.com/questions/58649/how-to-get-the-exif-data-from-a-file-using-c) – jgauffin