请教!java操作图像像素后,怎样完整输出成图片?

求助大佬:
                1、我用ImageIO.read 读取图片 ,2、对图片像素进行一些操作后,3、将像素嵌入回去图片中,再输出成图片。
                前两步还好好的,可是到了最后一步,用ImageIO,write写图片。图片的像素却改变了。
 
                因为我第二步的操作是 将加密信息嵌入图像,因此必须确保图片像素完整的输出。

               有大佬能帮助一下小弟嘛? 

ImageIO.read 进来应该是一个 BufferedImage
然后你怎么改变的像素?
通过 g2d 在这个 BufferedImage 里直接绘制的吗?
然后你 write 时,指定的什么图片格式呢?
"png"?"jpg"?
jpg是不支持
lrc下载透明像素的

对,我得到BufferedImage 后 获取了他RGB 的 B层 获得一个二维数组
然后我对它分成8*8的子块进行了一个dct变换,对子块的62 和 63位进行大小对比位置互换,然后进行idct变换,将子块嵌入会原像素中

然后write的时候是指定jpg,非透明的。

我对dct和idct变换没什么研究
也不清楚你只取数据的“B”层是如何操作的
在 BufferedImage 的数据数组中,每个像素应该是一个 Int 
这个 int 应该包含 ARGB 四个元素,A是透明度
你觉得最终像素被破坏了,是否有可能是A值发生了变化?

不能用 jpg 格式,jpg 是有损压缩,压缩的时候会改变像素值。

原来这样,那用什么格式会不压缩? 

因为我是单独的抽取一层,其他层应该不会影响吧,就算影响也没关系,只要我需要的那一层没变就好了。

发布了79 篇原创文章 · 获赞 2 · 访问量 2266

猜你喜欢

转载自blog.csdn.net/liuji0517/article/details/104747968