0

私はスクリプトを持っています:

$path = "uploads/";

$img = $_FILES['photoimg']['tmp_name'];
$dst = $path . $_FILES['photoimg']['name'];

if (($img_info = getimagesize($img)) === FALSE)
  die("Image not found or not an image");

$width = $img_info[0];
$height = $img_info[1];

switch ($img_info[2]) {
  case IMAGETYPE_GIF  : $src = imagecreatefromgif($img);  break;
  case IMAGETYPE_JPEG : $src = imagecreatefromjpeg($img); break;
  case IMAGETYPE_PNG  : $src = imagecreatefrompng($img);  break;
  default : die("Unknown filetype");
}

$tmp = imagecreatetruecolor($width, $height);
imagecopyresampled($tmp, $src, 0, 0, 0, 0, $width, $height, $width, $height);
imagejpeg($tmp, $dst.".jpg");

アップロードされた画像を常にJPG形式に変換する方法は?

これは完璧に機能しますが、ファイルがpngで透明度がある場合、新しい画像の背景は黒になります。この色を変更できますか?背景を白にしたいです。

4

1 に答える 1

3

透明度のあるpngを開く

$src = imagecreatefrompng($img);
imagealphablending($src, true);

空のファイルを作成するときは、白い背景で塗りつぶします(デフォルトの空の画像は黒です)

$tmp = imagecreatetruecolor($width, $height);
imagefill($tmp, 0, 0, imagecolorallocate($tmp, 255, 255, 255));
于 2013-01-27T19:32:34.613 に答える