【问题标题】:Convert transparent PNG image into Progressive JPEG using PHP使用 PHP 将透明 PNG 图像转换为渐进式 JPEG
【发布时间】:2017-03-09 21:50:50
【问题描述】:

我有一个透明背景的 PNG 图像,我想创建一个白色背景的渐进式 JPEG,任何解决方法都非常感谢,从 PNG 创建 PJPEG 是正确的吗?

以下是我的解决方法,我只是想知道这种方法是否正确。

$filePath = 'a.png';
$savePath = 'a.jpeg';

$colorRgb = array('red' => 255, 'green' => 255, 'blue' => 255); 

$img = @imagecreatefrompng($filePath);
$width  = imagesx($img);
$height = imagesy($img);

$backgroundImg = @imagecreatetruecolor($width, $height);
$color = imagecolorallocate($backgroundImg, $colorRgb['red'], $colorRgb['green'], $colorRgb['blue']);
imagefill($backgroundImg, 0, 0, $color);

imagecopy($backgroundImg, $img, 0, 0, 0, 0, $width, $height);

imageinterlace($backgroundImg, 1);

imagejpeg($backgroundImg, $savePath, 80);

【问题讨论】:

标签: php jpeg


【解决方案1】:
header('Content-Type: image/jpeg');
$image = new Imagick(); 
$image->readImage("image.png"); //add your png file
$image->setImageBackgroundColor('#FFFFFF'); //add your background color
$image = $image->flattenImages(); //flatten the image
$image->setImageFormat('jpg'); //set the format
$image->writeImage('image.jpg'); //save it
echo $image;

使用 Imagick 即可轻松完成工作 :)

注意:如果默认未启用 Imagick,请在 php.ini 中添加 extension=imagick.so

【讨论】:

  • 您可能想补充一点,ImageMagick 不一定是默认 PHP 安装的一部分,通常需要手动安装 - 或者不再是这种情况了?
  • @domdom 我猜它默认是启用的。如果不在 php.ini 中添加extension=imagick.so 将解决问题
【解决方案2】:

这是在我的项目中尝试过的一次,希望对您有所帮助:

$data = base64_decode($data);
$im = imagecreatefromstring($data);
if ($im === false) {
 die("imagecreatefromstring failed");
}
imageinterlace($im, true);
imagejpeg($im, 'new.jpg');
imagedestroy($im);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2010-10-02
    • 2019-03-19
    • 2011-04-23
    • 2013-09-14
    相关资源
    最近更新 更多