使用GD库将PNG图像转换为JPEG,并关闭子采样


Convert PNG images to JPEG using GD library with SUBSAMPLING OFF

我想即时将 png 图像转换为 jpeg,我系统上安装的唯一库是 gd 扩展。

我成功地将 png 转换为 jpeg,甚至将透明度转换为白色,唯一的问题是,生成的 jpeg 具有子采样。

Irfanview 输出以下内容作为图像信息:"JPEG,质量:100,子采样打开 (2x2)"。此外,dpi 字段不会填充任何值。

我的jpegs的消费者在显示它们时遇到问题(它是封闭的软件,可悲的是我在这里无能为力)

没有子采样的普通 jpeg 以及 dpi 字段具有值的位置可以正常工作。

所以我的问题是,如何摆脱子采样?提前谢谢你!

这是我的代码:

$image = imagecreatefrompng("file.png");
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
imagealphablending($bg, TRUE);
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagedestroy($image);
imagejpeg($bg);

根据 https://github.com/libgd/libgd/issues/210,似乎仍然不可能