cruiseton wrote:
Mobile01 圖片上傳完都沒有刪除功能了
上傳一百張也刪除不了任何一張
要他支援 webp?
==
不過也很難講, 基本上應該只要允許 webp 檔案型態可上傳就好了
==
可能還是不行, 可能還要調整大小, 太麻煩
+5 分.
M01 已 可以 上傳 WebP 圖檔,
cruiseton wrote:
M01 的確應該是有轉換格式而不只是 rename
==
CHATGPT:
PHP 把 WebP 轉成 JPG 的幾種實務做法,從「最簡單」到「最穩定」,並附上常見陷阱 ✅
✅ 方法一:使用 GD(最常見、免額外套件)
條件
PHP ≥ 7.0
GD 有編譯 WebP 支援
(imagewebp()、imagecreatefromwebp() 必須存在)
範例程式碼
<!--?php
$webp = 'input.webp';
$jpg = 'output.jpg';
$image = imagecreatefromwebp($webp);
if (!$image) {
die('WebP not supported by GD');
}
// 白底(避免透明變黑)
$bg = imagecreatetruecolor(imagesx($image), imagesy($image));
$white = imagecolorallocate($bg, 255, 255, 255);
imagefill($bg, 0, 0, $white);
imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
imagejpeg($bg, $jpg, 90); // 品質 0–100
imagedestroy($image);
imagedestroy($bg);
✅ 優點
不需外部程式
速度快
多數共享主機可用
⚠️ 注意
透明 WebP 會變黑 → 一定要補白底
有些主機的 GD 沒開 WebP 支援
✅ 方法二:使用 ImageMagick(最穩定、專業)
條件
主機已安裝 ImageMagick
PHP 已啟用 imagick 擴充
範例程式碼
<?php
$img = new Imagick('input.webp');
// 透明轉白底
$img--->setImageBackgroundColor('white');
$img = $img->mergeImageLayers(Imagick::LAYERMETHOD_FLATTEN);
$img->setImageFormat('jpg');
$img->setImageCompressionQuality(90);
$img->writeImage('output.jpg');
$img->clear();
$img->destroy();
✅ 優點
對 WebP / 透明 / 色彩支援最好
不易出錯
可處理大圖
⚠️ 缺點
共享主機可能沒裝
==
省略其他比較不可能用的方法




