我试图将多页颜色tiff文件转换为C#中的CompressionCCITT3 tiff。我意识到我需要确保所有像素都是1位。我还没有找到这个在线的有用的例子。压缩一个TIF文件
回答
退房:http://bobpowell.net/onebit.htm
你需要这种转换为CCITT3和CCITT4不支持彩色(如果我没记错的话)。
我看到上面的代码,它看起来像是用手动逻辑转换每个像素。
这会适合你吗?
进口System.Drawing.Imaging
'得到的颜色TIF文件
昏暗bmpColorTIF作为新的位图( “C:\ color.tif”)
' 选择的的一个区域TIF(将抓住所有帧)
昏暗rectColorTIF作为新矩形(0,0,bmpColorTIF.Width,bmpColorTIF.Height)
“克隆矩形作为1位山口或TIF
昏暗bmpBlackWhiteTIF为位图= bmpColorTIF.Clone(rectColorTIF,PixelFormat.Format1bppIndexed)
“你想用新的位图(保存等)
什么...
注意:有大量的像素格式可供选择。
Pimping声明:我为制作.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);
}
}
鲍勃·鲍威尔的例子是很好的,只要它去,但它有一些问题,而不是其中最重要的是,它是使用一个简单的阈值,如果你想要速度并且实际上并不关心你的输出是什么样的,或者你的输入域是真的非常黑白的话,那么这是非常棒的 - 只是用颜色表示。二值化是一个棘手的问题。当您的任务是在24/24时减少可用信息时,如何保留正确的信息并丢弃其他信息是一项挑战。 DotImage有六种不同的工具(IIRC)用于二值化。从我的角度来看,SimpleThreshold是桶的底部。
我建议在深入编码之前首先使用tiff和图像工具来试验预期的结果。我发现VIPS是一个方便的工具。下一个选择是研究LibTIFF可以做什么。我使用c#免费使用LibTiff.NET获得了很好的结果(另请参阅stackoverflow)。我对GDI tiff功能非常失望,虽然你的milage可能会有所不同(我需要缺失的16位灰度)。 也可以使用LibTiff实用程序(即,请参阅http://www.libtiff.org/man/tiffcp.1.html)
- 1. SharpZipLib:将单个文件压缩到单个压缩文件
- 2. 创建一个ZIP压缩文件而不压缩?
- 3. 创建一个压缩(或压缩)文件夹
- 4. 如何从一个压缩文件
- 5. zlib gzopen()返回一个压缩文件流。它解压缩文件吗?
- 6. 压缩文件
- 7. 如何解压压缩文件到一个文本扩展
- 8. Node.js - 压缩/解压缩文件夹
- 9. 与django_compressor压缩文件以gzip压缩
- 10. 压缩解压缩的exe文件
- 11. 压缩未压缩的MSI文件
- 12. Magick ++压缩和解压缩文件
- 13. 使用ZipFile类从多个文件的zip压缩文件解压缩文件
- 14. 如何使用Delphi将多个文件压缩到单个压缩文件中
- 15. IIS 7.5压缩会创建压缩文件,但会返回非压缩文件
- 16. 压缩和解压缩与每个“压缩,gzip,bzip2和zip”文件
- 17. 压缩.htaccess文件
- 18. 压缩XML文件
- 19. 压缩XML文件
- 20. 仅压缩文件
- 21. 解压缩文件
- 22. 压缩MDB文件
- 23. 解压缩文件
- 24. 压缩Log4j文件
- 25. WSQ文件 - 压缩
- 26. 压缩Javascript文件
- 27. 解压缩(解压缩)由.net压缩(解压缩)的文件.net system.io.compression.gzipstream
- 28. 最后一天修改过的压缩/压缩文件
- 29. maven-war-plugin创建一个认为其压缩的未压缩文件
- 30. 我可以做multipe写入和multipe读取到一个压缩/压缩文件