如何在php中将一个大jpg邮件压缩到非常小的尺寸?
http://img.choies.com/pimages/93665/5.jpg
这个img是一个很大的产品形象(750px * 1000px),但它只需要47k。图像非常清晰。
下面是我的图像类的一些代码,我调整了jpg的大小但获得了更大的jpg(120k)。<?php
class jy_image{
// ......
//创建图片把柄
function create_image($img_path){
$type=$this->get_image_type($img_path);
$im=null;
switch($type){
case 'jpg':
case 'jpeg':
case 'jpe': $im=@imagecreatefromjpeg($img_path);break;
case 'gif': $im=@imagecreatefromgif($img_path);break;
case 'png': $im=@imagecreatefrompng($img_path);break;
default:return false;
}
return $im;
}
// 缩小图像把柄
function resize_image($img_path,$length,$size_op){
$im=$this->create_image($img_path);
if($im==false){
return false;
}
$width=imagesx($im);
$height=imagesy($im);
//如果原图片的尺寸比预计的缩略图的尺寸还小,直接返回原图
if($width<=$length && $height<=$length){
return $im;
}
//等比缩小图片把柄
switch($size_op){
case 'max': // 最大长边尺寸
if($width>$height){
$w=$length;
$h=($height/$width)*$w;
}else if($width<$height){
$h=$length;
$w=($width/$height)*$h;
}else{
$w=$h=$length;
}
break;
case 'max_width': // 最大宽度
$w= ($width>=$length)?$length:$width;
$h= ($height/$width)*$w;
break;
case 'max_height': // 最大高度
$h= ($height>=$length)?$length:$height;
$w= ($width/$height)*$h;
break;
}
$im_new=imagecreatetruecolor($w,$h);
imagecopyresampled($im_new,$im,0,0,0,0,$w,$h,$width,$height);
return $im_new;
}
}
?>