[英]Reduce size of png image without losing transparency
我正在嘗試通過使用以下功能來減小圖像尺寸。 但是,當我使用具有透明度的圖像時,此功能會以透明像素重復圖像並產生變形。 如何在不損失透明度的情況下縮小png圖像?
function compress($source, $destination, $quality)
{
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
else if ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
else if ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
return $destination;
}
$source_img = 'source.png';
$destination_img = 'destination.png';
$d = compress($source_img, $destination_img, 90);
更改並在compress函數中添加幾行:
function compress($source, $destination, $quality)
{
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
imagejpeg($image, $destination, $quality); //Compress with jpg
else if ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
else if ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagepng($image, $destination, $quality); //Compress with png !!
return $destination;
}
$source_img = 'source.png';
$destination_img = 'destination.png';
$d = compress($source_img, $destination_img, 90);
重要的是要理解為什么當png時圖像會變成黑色背景,這就是由於透明度。 JPEG格式不允許具有透明圖像,只有PNG格式支持它,因此在每種情況下調用正確的函數都是唯一的問題。
如果以前可以運行,此腳本應該可以正常運行。 請嘗試一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.