GD imagejpeg() compression?


GD imagejpeg() compression?

我正在做一个项目,使用GD库在PHP中编辑jpg的像素。非常关键,也是我项目的关键,PHP的输出保留了我设置的像素值(咳嗽隐写术咳嗽(。

这是我第一次尝试用PHP进行图像处理。我以前在Java实现中没有遇到过任何问题,所以在进一步研究之前没有研究GD的jpeg压缩质量是愚蠢的。

事实证明,经过我所有的努力,我的代码并没有按照它应该的方式运行。我很确定这不是我的代码(在编辑的图像资源上测试了编码和解码功能,它们起了作用(。

我的问题是:

  1. 我能看到的唯一问题是imagejpeg()的压缩。我说得对吗?

  2. 有没有提供我需要的压缩的库?(保留我更改的像素值(

默认情况下,imagejpeg输出的图像质量为75,请尝试将其设置为100以获得完全质量的图像。

  bool imagejpeg ( resource $image [, string $filename [, int $quality ]] )

查看手册了解更多详细信息。

也可以尝试使用imagecopy重采样。(我想你应该在代码中的某个地方使用imagecopyresized。使用imagecopyresampled而不是它。(

编辑

那么我认为你应该试试ImageMagick(或GD2(。它提供了比GD更好的质量。检查此

如果逐像素进行隐写,则JPEG文件格式不太适合隐写。

JPEG使用图像压缩-即使具有最高质量-也会破坏每个像素的位级别信息。jpeg类型的压缩(有损压缩(用于人眼/大脑,以保留图像,而不是文件中的图像位。

你需要使用一种能够保留像素的图像格式——正如你已经写过的那样。这样的格式更有可能是带有RLE压缩的BMP,或者带有ZIPRLE压缩的TIFF图像格式。这称为无损数据压缩

使用imagepng()而不是imagejpeg()函数,并将压缩设置为0:

bool imagepng ( resource $image [, string $filename [, int $quality [, int $filters ]]] )

请参阅:http://php.net/manual/en/function.imagepng.php