php生成图片缩略图方法函数代码如下:
0,'file'=>'','width'=>0,'height'=>0,'savepath'=>'','info'=>'');
if(!file_exists($file)){
return array('status'=>1,'file'=>'','width'=>0,'height'=>0,'savepath'=>'','info'=>'图片文件不存在');
}
//检测文件类型
$fp=fopen($file,'rb');
$str=fread($fp,2); //只读2字节
fclose($fp);
$str=@unpack(c2chars,$str);
$typecode=intval($str['chars1'].$str['chars2']);
$filetype='';
switch($typecode){
case 255216:
$filetype='jpg';
break;
case 7173:
$filetype='gif';
break;
case 6677:
$filetype='bmp';
break;
case 13780:
$filetype='png';
break;
default:
$filetype=$typecode;
break;
}
if($str['chars1']=='-1'&&$str['chars2']=='-40'){
$filetype='jpg';
}
if($str['chars1']=='-119'&&$str['chars2']=='80'){
$filetype='png';
}
if(!in_array($filetype,array('jpg','gif','bmp','png'))){
return array('status'=>2,'file'=>'','width'=>0,'height'=>0,'savepath'=>'','info'=>'图片文件类型不正确:'.$filetype);
}
//图片缩放处理
if($filetype=='jpg'){
$im=imagecreatefromjpeg($file);
}
if($filetype=='gif'){
$im=imagecreatefromgif($file);
}
if($filetype=='png'){
$im=imagecreatefrompng($file);
}
if(empty($savepath))
$savepath=$file;
$width=imagesx($im);
$height=imagesy($im);
if($width'','width'=>0,'height'=>0,'savepath'=>'','info'=>'图片尺寸小于生成缩略图的尺寸');
}
$ratio=$width/$height;//实际图象的比例
$thumbratio=$thumbwidth/$thumbheight;//改变后的图象的比例
if($iscut){//裁切处理
if(function_exists('imagepng')&&(str_replace('.','',php_version)>=512)){//针对php版本大于5.12参数变化后的处理情况
$quality=9;
}
if($ratio>=$thumbratio){//高度优先
$newimg=imagecreatetruecolor($thumbwidth,$thumbheight);
imagecopyresampled($newimg,$im,0,0,0,0,$thumbwidth,$thumbheight,(($height)*$thumbratio),$height);
imagejpeg($newimg,$savepath,$quality);
}
if($ratio=$thumbratio){
$newimg=imagecreatetruecolor($thumbwidth,($thumbwidth)/$ratio);
imagecopyresampled($newimg,$im,0,0,0,0,$thumbwidth,($thumbwidth)/$ratio,$width,$height);
imagejpeg($newimg,$savepath,$quality);
}
if($ratio0,'file'=>$file,'width'=>$thumbwidth,'height'=>$thumbheight,'savepath'=>$savepath,'info'=>'缩略图片生成成功');
}
使用方法如下:
$a=thumbimage('1.jpg',200,100,'2.jpg');//将1.jpg生成宽为200,高为100的缩略图,并保存为2.jpg
print_r($a);
打印结果:
array(
[status] => 0
[file] => 1.jpg
[width] => 200
[height] => 200
[savepath] => 2.jpg
[info] => 缩略图片生成成功
)
$a=thumbimage('1.jpg',200,100);//将1.jpg生成宽为200,高为100的缩略图,并直接覆盖1.jpg,不生成新图片