首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CCITT T.4技术为透明背景图像生成tiff图像

如何使用CCITT T.4技术为透明背景图像生成tiff图像
EN

Stack Overflow用户
提问于 2015-10-29 20:29:22
回答 1查看 2.3K关注 0票数 1

我有一个手写文本作为BufferedImage对象。我需要使用CCITT T.4压缩技术将其生成为tiff图像文件。

但CCITT T.4要求图像是1位深度的图像。我在BufferedImage中的图像是32位深度的。当我使用convert1() funtion将其转换为1位时,黑色手写消失了,整个图像变成了黑色。

我在其他地方读到,由于1位图像是黑白的,所以当转换为1位时,它将透明层位转换为黑色。我的手写笔记也是黑色的,所以整个图像都变成了黑色。

我可以使用LZW技术生成tiff,没有问题。即使使用CCITT T.4也是如此,但仅限于24位图像。当图像为32位(带有额外的透明层)时,图像将变为黑色。谁能指导我如何将图像转换为CCITT T.4格式的透明图像。

EN

回答 1

Stack Overflow用户

发布于 2015-10-31 14:38:16

由于来自haraldK的宝贵指针,我能够将32位TIF图像转换为1位图像,并使用CCiTT T.4压缩。得到的图像是清晰的,并且在行中没有中断。

下面是我修改后的代码:

代码语言:javascript
复制
BufferedImage image32bit; 
//image32bit is populated

Graphics2D g=(Graphics2D)image.createGraphics(); 

AlphaComposite ac=AlphaComposite.getInstance(AlphaComposite.DST_ATOP,0.85f);
//0.85f is the opacity threshold value to make more or less pixels black. 

g.setColor(Color.WHITE);
g.fillRect(0,0,image.getWidth(),image.getHeight());
g.dispose()

//Convert to monochrome 1 bit image using image4j jar - convert1 method
BufferedImage singleBitImage=ConvertUtil.convert1(image32bit);

//Use JAI jar to set compression as CCITT T.4 and write out the image
//Insert code to create writer and writeParam ...
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionType("CCITT T.4");

writer.write(null, iioImage, writeParam);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33414293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档