[英]Better quality PNG transparency with PHP
我有一個看起來像這樣的代碼:
<?php
$imgl = "test/white.png";
$img2 = "test/1.png";
$dest = imagecreatefrompng($imgl);
$src = imagecreatefrompng($img2);
imagecolortransparent($src, imagecolorat($src, 0, 0));
imagecolortransparent($dest, imagecolorat($dest, 0, 0));
$src_x = imagesx($src);
$src_y = imagesy($src);
imagecopymerge($dest, $src, 0, 0, 0, 0, $src_x, $src_y, 100);
// Output and free from memory
header('Content-Type: image/png');
imagegif($dest);
imagedestroy($dest);
imagedestroy($src);
?>
此代碼將圖像合並在一起,同時保持其透明度。 但是,此代碼使圖像的透明度非常低,並且邊緣看起來非常粗糙。 我想知道,是否有辦法可以保持圖像的透明度,但質量更好? 但是,我仍然希望該腳本完成相同的功能。
看起來您正在將圖像輸出為GIF而不是PNG。 嘗試使用imagepng()
而不是imagegif()
。
imagepng($dest);
GIF僅具有1位Alpha通道,這意味着它無法表示部分透明性。 每個像素都是完全透明或完全不透明的。 這是您的代碼的第一個潛在問題。
另一個是imagecolortransparent()
將一種顏色設置為透明。 這意味着,只有正是彩色像素將是透明的。 如果需要平滑過渡,則可能需要自己實現實際的每像素真彩色透明度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.