php imagick convert PNG to jpg

前端 未结 4 1416
无人共我
无人共我 2020-12-14 12:30
$image = \"[...]\"; //binary string containing PNG image
$file = fopen(\'image.tmp\', \'wb\');
fputs($file, $image);
fclose($file);
$image = new Imagick(\'PNG:image.         


        
相关标签:
4条回答
  • 2020-12-14 12:55

    Found a solution:

    $white=new Imagick();
    $white->newImage($width, $height, "white");
    $white->compositeimage($image, Imagick::COMPOSITE_OVER, 0, 0);
    $white->setImageFormat('jpg');
    $white->writeImage('image.jpg');
    
    0 讨论(0)
  • 2020-12-14 12:57

    Another way to convert transparent png to jpg, as mentioned in Imagick::flattenImages:

    $im = new Imagick('image.png');
    $im->setImageBackgroundColor('white');
    
    $im->flattenImages(); // This does not do anything.
    $im = $im->flattenImages(); // Use this instead.
    
    $im->setImageFormat('jpg');
    $im->writeImage('image.jpg');
    

    As time moves on, flattenImages() has been deprecated.
    Instead of the line above use:

    $im->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
    
    0 讨论(0)
  • 2020-12-14 12:58

    You can use setBackgroundColor to set the default background color to something else than black. The PNG transparency will be replaced by the background color when saving to JPG.

    Edit: Use it like so:

    $img->setBackgroundColor(new ImagickPixel('#FFFFFF'));
    
    0 讨论(0)
  • 2020-12-14 13:05

    Try adding $image->setBackgroundColor(0xFFFFFF); after $image = new Imagick('PNG:image.tmp');

    0 讨论(0)
提交回复
热议问题