web-dev-qa-db-ja.com

GD! png画像をjpegに変換し、アルファをデフォルトで黒ではなく白にします

このようなことを試しましたが、画像の背景が白くなり、必ずしも画像のアルファではありません。すべてをjpgとしてアップロードしたかったので、何らかの方法でpng画像を透過的に「フラット化」して、デフォルトで白にすることができれば、代わりにjpgとして使用できます。助けに感謝します。ありがとう。

$ old = imagecreatefrompng($ upload); 
 $ background = imagecolorallocate($ old、255,255,255); 
 imagefill($ old、0、0、$ background); 
 imagealphablending( $ old、false); 
 imagesavealpha($ old、true);
19
Shawn
<?php
$input_file = "test.png";
$output_file = "test.jpg";

$input = imagecreatefrompng($input_file);
list($width, $height) = getimagesize($input_file);
$output = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($output,  255, 255, 255);
imagefilledrectangle($output, 0, 0, $width, $height, $white);
imagecopy($output, $input, 0, 0, 0, 0, $width, $height);
imagejpeg($output, $output_file);
56
Alex Jasmin