我正在开发一个项目,我使用GD库在PHP中编辑jpg的像素。 它的非常关键是我的项目的关键,PHP 的输出保留了我设置的像素值(咳嗽 - 咳嗽 - 咳嗽)。
这是我第一次尝试在PHP中进行图像处理。在我的Java实现之前我没有遇到过任何问题,所以在进一步研究之前,我没有调查GD的jpeg
压缩质量是愚蠢的。
事实证明,经过我的努力,我的代码没有按照预期的方式运行。我很确定这不是我的代码(在编辑过的图像资源上测试了编码和解码功能,并且它们有效)。
我的问题是:
我能看到的唯一问题是imagejpeg()
的压缩。我可以是对的吗?
是否有任何库提供我需要的压缩?(保留我更改的像素值)
答案 0 :(得分:3)
默认情况下,imagejpeg
输出的图像质量为75,尝试将其设置为100以使图像达到最佳质量。
bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )
查看manual以获取更多详细信息。
也可以尝试使用imagecopyresampled。 (我想你会在你的代码中的某个地方使用imagecopyresized
。使用imagecopyresampled
代替它。)
修改强>
然后我认为你应该尝试ImageMagick(或GD2)。它提供比GD更好的质量。查看this
答案 1 :(得分:2)
如果逐像素地执行steganography, JPEG 文件格式不太适合隐写术。
JPEG 使用图像压缩 - 即使质量最高 - 也会破坏每个像素上位级别的信息。 jpeg压缩类型( lossy compression )用于人眼/大脑保留图像,但不保留文件中图像的位。
您需要使用能够保留像素的图像格式 - 正如您已经编写的那样。这种格式更可能是带有 RLE 压缩的 BMP 或带有 ZIP 或 RLE的 TIFF 图像格式压缩。这叫做 lossless data compression 。
答案 2 :(得分:0)
使用imagepng()
代替imagejpeg()
函数并将压缩设置为0:
bool imagepng ( resource $image [, string $filename [, int $quality [, int $filters ]]] )