Ik heb een script dat png images omzet in jpg. Dat gaat soms goed, maar soms krijg ik dat het transparante deel van de png zwart wordt in de jpg. Ik zie het juist graag wit. Hoe krijg ik dat voor elkaar?

Deze vraag zowel voor GD als Imagic.
je zegt dat het soms wel is, en soms niet.
Onder welke voorwaarden verschilt dit?
Geen idee. Mijn indruk is dat het afhangt van het png plaatje dat ik aangeboden krijg. En daar heb ik geen invloed op.

[size=xsmall]Toevoeging op 16/02/2023 20:57:48:[/size]

Wat ik doe is heel basic. Ik lees het plaatje in met imagecreatefrompng en dan schrijf ik het weg met imagejpeg.
GD:
<?php
$width = imagesx($src);
$height = imagesy($src);
$bg = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($bg, 255, 255, 255);
imagefill($bg, 0, 0, $white);
imagecopyresampled($bg, $src, 0, 0, 0, 0, $width, $height, $width, $height);
imagepng($bg, 'merged.png', 0);
?>

https://stackoverflow.com/questions/3538106/how-to-delete-transparent-color-in-images

ImageMagick:
<?php
$image = new Imagick();
$image->readImageBlob($picture);
$image->setImageBackgroundColor('white');
$image->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$image->writeImage ("after.png");
?>

https://stackoverflow.com/questions/58923408/php-removing-alpha-in-imagick-results-in-corrupted-picture
Thank you, Ad Fundum. That solved my problem.

Reageren