使用 PHP 的 GDlib 調整具有透明度的 PNG 大小
處理 PNG 檔案時,保留影像透明度至關重要。雖然 GDlib 提供影像處理功能,但在保留透明度的情況下調整 PNG 大小可能會帶來挑戰。
使用 GD 的 imagecopyresampled 函數時遇到的一個問題是原始 PNG 中的透明區域被替換為純色。儘管將 imagesavealpha 設為 true,還是會發生這種情況。
要解決此問題,正確指定 alpha 設定至關重要。在 PHP 中,Alpha 設定適用於目標影像,而不是來源影像。透過調整目標影像的 Alpha 屬性,我們可以實現透明度保留:
imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true );
imagealphablending(false) 停用任何混音並尊重影像的 Alpha 通道。 imagesavealpha(true) 確保在輸出中保留 PNG 的 alpha 通道。
這是一個修改過的 PHP 程式碼片段,其中包含這些調整:
$uploadTempFile = $myField[ 'tmp_name' ] list( $uploadWidth, $uploadHeight, $uploadType ) = getimagesize( $uploadTempFile ); $srcImage = imagecreatefrompng( $uploadTempFile ); $targetImage = imagecreatetruecolor( 128, 128 ); imagealphablending( $targetImage, false ); imagesavealpha( $targetImage, true ); imagecopyresampled( $targetImage, $srcImage, 0, 0, 0, 0, 128, 128, $uploadWidth, $uploadHeight ); imagepng( $targetImage, 'out.png', 9 );
此修改後的程式碼應該有效地調整 PNG 的大小圖像,同時保持透明度。請注意,它不能保證對所有情況都是完美的,但它提供了一個堅實的起點。
以上是如何使用 PHP 的 GDlib 調整 PNG 的透明度並保留 Alpha 通道?的詳細內容。更多資訊請關注PHP中文網其他相關文章!