【发布时间】:2015-08-30 15:12:30
【问题描述】:
我正在尝试通过使用以下函数来减小图像大小。但是当我使用具有透明度的图像时,此功能会以透明像素重复图像并产生扭曲。 如何在不丢失透明度的情况下减少 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);
【问题讨论】:
-
请阅读有关 imagecolortransparent 的更多信息
-
除非我非常不擅长阅读 PHP(这完全可能),否则您总是使用
imagejpeg()将所有内容转换为 JPEG 格式,因此您将始终失去透明度,因为 JPEG 不支持透明度。 -
那么如何减小 png 图片尺寸?
-
我不知道,但我认为您可以将 png 保存为 8 位和 24 位的东西....可能会给出不同的尺寸,干杯