4

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

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

事实证明,经过我的努力,我的代码并没有按照预期的方式运行。我很确定这不是我的代码(在已编辑的图像资源上测试了编码和解码功能并且它们有效)。

我的问题是:

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

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

4

3 回答 3

3

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

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

查看手册以获取更多详细信息。

也尝试使用imagecopyresampled。(我认为您会imagecopyresized在代码中的某个地方使用。使用imagecopyresampled而不是它。)

编辑

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

于 2011-07-03T06:01:13.033 回答
2

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

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

您需要使用能够保留像素的图像格式 - 正如您已经编写的那样。这种格式更有可能是带有RLE压缩的BMP或带有ZIPRLE压缩的TIFF图像格式。这就是所谓的无损数据压缩

于 2011-07-03T07:02:12.343 回答
0

使用imagepng()代替imagejpeg()函数并将压缩设置为 0 :

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

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

于 2013-10-10T14:37:26.727 回答