在PHP 中調整PNG 大小時保持透明度
在PHP 中調整具有透明背景的PNG 影像大小時,確保透明度為至透明度關重要的維持。但網路上很多程式碼範例未能正確實現這一點,導致調整大小後背景變黑。
要解決這個問題,需要對程式碼進行具體調整。在執行 imagecolorallocatealpha() 函數之前,必須將混合模式和儲存 Alpha 通道標誌分別配置為 false 和 true。
以下是包含這些調整的更新程式碼片段:
<?php /** * https://stackoverflow.com/a/279310/470749 * * @param resource $image * @param int $newWidth * @param int $newHeight * @return resource */ public function getImageResized($image, int $newWidth, int $newHeight) { $newImg = imagecreatetruecolor($newWidth, $newHeight); imagealphablending($newImg, false); // Turn off blending imagesavealpha($newImg, true); // Turn on save alpha channel $transparent = imagecolorallocatealpha($newImg, 255, 255, 255, 127); imagefilledrectangle($newImg, 0, 0, $newWidth, $newHeight, $transparent); $src_w = imagesx($image); $src_h = imagesy($image); imagecopyresampled($newImg, $image, 0, 0, 0, 0, $newWidth, $newHeight, $src_w, $src_h); return $newImg; } ?>
透過這些修改,程式碼應該可以有效地保持 PNG 影像的透明度調整大小。
注意:此更新的程式碼僅適用於背景不透明度為 0 的影像。如果影像的不透明度介於 0 到 100 之間,則調整大小後背景將顯示為黑色。
以上是在 PHP 中調整 PNG 大小時如何保持透明度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!