どうしてもJPGに統一したいときってありますよね。
//初期設定
$name = str_replace('.png', '.jpg', $_FILES['name']);
$put = 'XXXXX/' . $name; // 保存場所
$quality = 75; // 圧縮率:0-100 / 初期値80
// アップ画像を読み込む
$image = imagecreatefrompng($_FILES['tmp_name']);
// 背景画像を生成
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));
// 透過部分を白で塗りつぶす
imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
// ブレンドモードをオンにする
imagealphablending($bg, true);
// 読み込んだアップ画像を背景画像にコピー
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
// 保存
imagejpeg($bg, $put, $quality);
// メモリを解放:PHP8.0以降は不要
imagedestroy($image);
コメント欄