2011-02-26 3 views
3

해상도 (너비 x 높이)를 결정하고 스트림 (또는 바이트 배열)에서 이미지의 유형 (gif, jpeg, png, bmp 등)을 결정하는 방법) 전체 이미지를 디코딩하는 비용을 들이지 않고도?WP37/Silverlight에서 이미지 해상도 및 유형 결정 (실제로는 디코딩하지 않음)

헤더를 읽는 것만으로이 작업을 수행 할 수 있습니다. 그런 코드 나 라이브러리가 이미 존재하는지 궁금합니다.

답변

2

서명을 사용하여 파일 형식을 결정합니다. 바로 다음에 Width 및 Height가 있으며, 둘 다 리틀 엔디안 바이트 순서를 사용하는 Int16 값입니다.

파일 PNG 파일은 바이트 값 89로 시작하고 "PNG"다음에 다른 4 바이트가 오는 ASCII 인코딩으로 시작합니다. 그 직후 (오프셋 8)에는 너비와 높이 값이 모두 4 바이트 크기입니다 (바이트 정렬이 확실하지 않습니다).

BMP 파일은 "BM"에 대한 ASCII 인코딩으로 시작됩니다. 오프셋 18에는 너비를 지정하는 Int32 값이 있고 오프셋 22에는 모두 리틀 엔디안 바이트 순서가 사용됩니다.

이 정보로 무장하면 파일 스트림의 처음 26 바이트를 읽는 코드를 작성하고 너비와 높이와 함께 파일 유형을 결정할 수 있어야합니다.

1

라이브러리가 없지만 부분 응답 here이 stackoverflow에 있습니다. SemiColon의 답변에는 헤더에서 이미지 유형을 추출하는 샘플이 포함되어 있으므로 쉽게 다시 작성하여 각 유형의 크기를 추출 할 수 있습니다.

HTH 레온

이 있음을 사용할 수 있도록 파일 "GIF89a"에 대한 ASCII 인코딩 시작 응답 @Leon의 링크에서 제공하는 이펙 정보 ..

GIF뿐만 아니라