2008-09-04 4 views
0

다중 페이지 컬러 TIFF 파일을 C#의 C# CompressionCCITT3 tiff로 변환하려고합니다. 나는 모든 픽셀이 1 비트인지 확인해야한다는 것을 알고 있습니다. 나는이 온라인의 유용한 예를 발견하지 못했다.TIF 파일 압축

답변

1

체크 아웃 : http://bobpowell.net/onebit.htm

당신은 (만약 내가 기억) 색상을 지원하지 않는 CCITT3 및 CCITT4 등이 변환이 필요합니다.

0

나는 위의 코드를 보았고 수동 논리로 모든 픽셀을 변환하는 것처럼 보였다.

이 기능을 사용할 수 있습니까?

수입 System.Drawing.Imaging

'컬러 TIF 파일 뉴 비트 맵으로

희미한 bmpColorTIF를 얻을 수 ("C : \ color.tif")

'는의 영역을 선택 TIF (모든 프레임을 잡을 것이다)

새로운 직사각형으로

어둡게 rectColorTIF (0, 0, bmpColorTIF.Width, bmpColorTIF.Height)

가 '1 비트 COL 같은 직사각형 복제 또는 비트 맵 = bmpColorTIF.Clone으로

희미한 bmpBlackWhiteTIF (rectColorTIF, PixelFormat.Format1bppIndexed) TIF

'새 비트 맵 (저장 등)

으로 원하는 것을 할

...

참고 : 선택할 수있는 픽셀 형식 톤이 있습니다.

1

포주 (Phimping) 면책 조항 : 저는 .NET 이미징 소프트웨어를 제작하는 회사 인 Atalasoft에서 근무하고 있습니다. dotImage를 사용

는,이 작업은 다음과 같이된다 :

FileSystemImageSource source = new FileSystemImageSource("path-to-your-file.tif", true); // true = loop over all frames 
// tiff encoder will auto-select an appropriate compression - CCITT4 for 1 bit. 
TiffEncoder encoder = new TiffEncoder(); 
encoder.Append = true; 

// DynamicThresholdCommand is very good for documents. For pictures, use DitherCommand 
DynamicThresholdCommand threshold = new DynamicThresholdCommand(); 

using (FileStream outstm = new FileStream("path-to-output.tif", FileMode.Create)) { 
    while (source.HasMoreImages()) { 
     AtalaImage image = source.AcquireNext(); 
     AtalaImage finalImage = image; 
     // convert when needed. 
     if (image.PixelFormat != PixelFormat.Pixel1bppIndexed) { 
      finalImage = threshold.Apply().Image; 
     } 
     encoder.Save(outstm, finalImage, null); 
     if (finalImage != image) { 
      finalImage.Dispose(); 
     } 
     source.Release(image); 
    } 
} 

이 지남에 따라 밥 파월의 예는 지금까지 좋은,하지만 그것이라는 것이다 조금도있는 문제의 번호를 가지고 간단한 임계 값을 사용하면 속도를 원하고 실제로 출력물이 어떤 모양인지 또는 입력 도메인이 실제로는 매우 흑백 인 것처럼 걱정하지 않아도됩니다. 이진화는 까다로운 문제입니다. 가능한 정보를 1/24까지 줄이려면 적절한 정보를 유지하고 나머지는 버리는 것이 어려운 일입니다. DotImage는 이진화를위한 6 가지 도구 (IIRC)를 가지고 있습니다. SimpleThreshold는 저의 관점에서 배럴의 맨 아래에 있습니다.

1

먼저 코딩을 시작하기 전에 tiff 및 이미지 유틸리티를 사용하여 원하는 결과를 실험 해보는 것이 좋습니다. 편리한 도구로 VIPS을 찾았습니다. 다음 옵션은 LibTIFF가 할 수있는 것을 조사하는 것입니다. 무료 LibTiff.NET을 사용하여 좋은 결과를 얻었습니다 (# stackoverflow 참조). 귀하의 마일리지가 다를 수 있지만 (나는 실종 16 비트 그레이 스케일 필요) GDI 티파니 기능에 매우 실망했습니다. 또한 LibTiff 유틸리티 (예 : http://www.libtiff.org/man/tiffcp.1.html 참조)

을 사용할 수 있습니다.