2010-01-27 6 views
6

저는 JPEG 및 TIFF를 포함한 이미지 파일의 폴더를 인쇄하는 응용 프로그램을 만들고 있습니다. TIFF 이미지는 일반적으로 흑백 (1bpp)입니다. 이미지가 그래서 올바른 프린터 (컬러 프린터 나 흑백 프린터)에 이미지를 보낼 수 있습니다 & 그레이 스케일 (W) 또는 컬러 또는 B의 경우비트 맵의 ​​색상 깊이는 어떻게 확인할 수 있습니까?

이미지를로드 한 후, 나는 결정합니다.

생성자 image = new Bitmap(filename);을 사용하여 이미지를로드하고 있습니다.

편집 : 픽셀의 깊이를 확인하는 대답은 B & W.에 대한 이미지가 모든 픽셀을 반복하지 않고 그레이 스케일 인 경우 체크에 어떤 아이디어 중대하다? 당신이 B & W 프린터로 바로 블랙 & 화이트보다 더 보낼 것입니다하지만

답변

3

이를 확인하는 적절한 방법은 다음과 같습니다

JPEG 파일의 경우 비트 맵의 ​​PropertyItems 모음을 사용하여 해당 속성을 확인해야합니다. 여기에는 비트 깊이를 결정하는 데 도움이되는 적절한 EXIF 태그가 포함될 수 있습니다. 다음 단계는 JPEG header을 구문 분석하고 '프레임 시작'마커를 찾은 다음 이미지의 구성 요소 수를 찾습니다.

최종적인 방법은 JPEG를 Bitmap 객체에로드하고 픽셀 수를 forumla (width * height * bytes_per_pixel)와 비교하는 것입니다. 따라서 비트 맵을로드하고 실제 원시 데이터의 바이트 수가 (너비 * 높이)와 같으면 이미지가 픽셀 당 1 바이트를 가지며 회색 음영이기 때문에 안전한 방법이라는 것을 알고 있습니다.

마지막으로 확인해야 할 것은 비트 맵 자체의 PixelFormat입니다.

TIFF 파일 형식의 경우 PropertyItems 컬렉션을 사용하여 동일한 작업을 수행하고 사양에 언급 된 적절한 태그를 확인해야합니다. 이러한 문제가 발생하면 이미지 바이트 비교를 수행하고 마지막으로 PixelFormat 속성을 최후의 수단으로 사용하십시오.

10

그냥, System.Drawing.Imaging.PixelFormat

에서 당신을 그것은 값 중 하나와 일치합니다이 속성

image.PixelFormat 

을 확인 또한 그레이 스케일을 전송해야합니다.

+0

미친, 내가 어떻게 그것을 놓쳤는 지 모르겠다, 비트 맵 클래스에 대한 회원의 목록을 통해 파고. –

+0

나는 그것을 테스트했기 때문에 나는 아직 대답을 받아들이지 않았다. 회색 음영을 확인하는 방법에 대해서도 생각했습니다. 아마도 나는 그것을 명확히하기 위해 질문을 편집해야 할 것입니다. –

2

PixelFormat 속성을 사용하십시오.