Hoe converteer ik transparante background naar wit?
Wim Roffel
16/02/2023 20:04:01Ik 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.
Deze vraag zowel voor GD als Imagic.
PHP hulp
23/11/2024 01:23:10Wim Roffel
16/02/2023 20:53:07Geen idee. Mijn indruk is dat het afhangt van het png plaatje dat ik aangeboden krijg. En daar heb ik geen invloed op.
Toevoeging op 16/02/2023 20:57:48:
Wat ik doe is heel basic. Ik lees het plaatje in met imagecreatefrompng en dan schrijf ik het weg met imagejpeg.
Toevoeging op 16/02/2023 20:57:48:
Wat ik doe is heel basic. Ik lees het plaatje in met imagecreatefrompng en dan schrijf ik het weg met imagejpeg.
GD:
https://stackoverflow.com/questions/3538106/how-to-delete-transparent-color-in-images
ImageMagick:
https://stackoverflow.com/questions/58923408/php-removing-alpha-in-imagick-results-in-corrupted-picture
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?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);
?>
$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:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$image = new Imagick();
$image->readImageBlob($picture);
$image->setImageBackgroundColor('white');
$image->setImageAlphaChannel(Imagick::ALPHACHANNEL_REMOVE);
$image->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$image->writeImage ("after.png");
?>
$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