我有ImageManipulation.php
并希望用它重新调整图像大小。当重新调整大小时,它仍会改变分辨率,如果我上传图像2100 x 900与2,3MB文件大小,在服务器上将保存700 x 600 80KB文件大小。
如何以相同的分辨率保存但文件大小更少?
例如:2100x900 100KB文件。
这是我的图像压缩功能:
function imageCompression($imgfile="",$thumbsize=0,$savePath=NULL, $compressRatio=100) {
//echo 'Lets Compression Only';
if($savePath==NULL) {
header('Content-type: image/jpeg');
}
list($width,$height)=getimagesize($imgfile);
/* The width and the height of the image also the getimagesize retrieve other information as well */
$imgratio=$width/$height;
//if($imgratio>1) {
$newwidth=$thumbsize;
$newheight=$thumbsize/$imgratio;
//} else {
// $newheight=$thumbsize;
// $newwidth=$thumbsize*$imgratio;
//}
$thumb=imagecreatetruecolor($newwidth,$newheight); // Making a new true color image
$source=imagecreatefromjpeg($imgfile); // Now it will create a new image from the source
imagecopyresampled($thumb,$source,0,0,0,0,$newwidth,$newheight,$width,$height); // Copy and resize the image
imagejpeg($thumb,$savePath,$compressRatio); //100 --> Compression Ration Quality
imagedestroy($thumb);
}
答案 0 :(得分:1)
按照给出的代码
<?php
function compress($source, $destination, $quality) {
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
return $destination;
}
$source_img = 'source.jpg';
$destination_img = 'destination .jpg';
$d = compress($source_img, $destination_img, 90);
&GT;
它应该做你的工作。
请更改来源和目的地,它将保持相同的分辨率。
答案 1 :(得分:0)
一种方法是使用adobe Photoshop或任何其他工具转换图像Web格式。或者将图像更改为.png文件类型 它通常可以更优雅地处理压缩。