PHP实现图片不变型裁剪及图片按比例裁剪的方法
本文实例讲述了PHP实现图片不变型裁剪及图片按比例裁剪的方法。分享给大家供大家参考,具体如下:
图片不变型裁剪
<?php
/**
*imageCropper
*@paramstring$source_path
*@paramstring$target_width
*@paramstring$target_height
*/
functionimageCropper($source_path,$target_width,$target_height){
$source_info=getimagesize($source_path);
$source_width=$source_info[0];
$source_height=$source_info[1];
$source_mime=$source_info['mime'];
$source_ratio=$source_height/$source_width;
$target_ratio=$target_height/$target_width;
if($source_ratio>$target_ratio){
//image-to-height
$cropped_width=$source_width;
$cropped_height=$source_width*$target_ratio;
$source_x=0;
$source_y=($source_height-$cropped_height)/2;
}elseif($source_ratio<$target_ratio){
//image-to-widht
$cropped_width=$source_height/$target_ratio;
$cropped_height=$source_height;
$source_x=($source_width-$cropped_width)/2;
$source_y=0;
}else{
//image-size-ok
$cropped_width=$source_width;
$cropped_height=$source_height;
$source_x=0;
$source_y=0;
}
switch($source_mime){
case'image/gif':
$source_image=imagecreatefromgif($source_path);
break;
case'image/jpeg':
$source_image=imagecreatefromjpeg($source_path);
break;
case'image/png':
$source_image=imagecreatefrompng($source_path);
break;
default:
return;
break;
}
$target_image=imagecreatetruecolor($target_width,$target_height);
$cropped_image=imagecreatetruecolor($cropped_width,$cropped_height);
//copy
imagecopy($cropped_image,$source_image,0,0,$source_x,$source_y,$cropped_width,$cropped_height);
//zoom
imagecopyresampled($target_image,$cropped_image,0,0,0,0,$target_width,$target_height,$cropped_width,$cropped_height);
header('Content-Type:image/jpeg');
imagejpeg($target_image);
imagedestroy($source_image);
imagedestroy($target_image);
imagedestroy($cropped_image);
}
$filename="8fcb7a0831b79c61.jpg";
imageCropper($filename,200,200);
?>
图片按比例裁剪
<?php
/**
*imageZoom
*@paramstring$file
*@paramdouble$zoom
*/
functionimageZoom($filename,$zoom=0.6){
//baseinfo
$sourceImageInfo=getimagesize($filename);
$sourceWidth=$sourceImageInfo[0];
$sourceHeight=$sourceImageInfo[1];
$sourceMine=$sourceImageInfo['mime'];
$sourceRatio=$sourceWidth/$sourceHeight;
$sourceX=0;
$sourceY=0;
//zoom
$targetRatio=$zoom;
//target-widht-height
$targetWidth=$sourceWidth*$targetRatio;
$targetHeight=$sourceHeight*$targetRatio;
//init-params
$sourceImage=null;
switch($sourceMine){
case'image/gif':
$sourceImage=imagecreatefromgif($filename);
break;
case'image/jpeg':
$sourceImage=imagecreatefromjpeg($filename);
break;
case'image/png':
$sourceImage=imagecreatefrompng($filename);
break;
default:
return;
break;
}
//temp-target-image
$tempSourceImage=imagecreatetruecolor($sourceWidth,$sourceHeight);
$targetImage=imagecreatetruecolor($targetWidth,$targetHeight);
//copy
imagecopy($tempSourceImage,$sourceImage,0,0,$sourceX,$sourceY,$sourceWidth,$sourceHeight);
//zoom
imagecopyresampled($targetImage,$tempSourceImage,0,0,0,0,$targetWidth,$targetHeight,$sourceWidth,$sourceHeight);
//header
header('Content-Type:image/jpeg');
//image-loading
imagejpeg($targetImage);
//destroy
imagedestroy($tempSourceImage);
imagedestroy($sourceImage);
imagedestroy($targetImage);
}
$filename="8fcb7a0831b79c61.jpg";
imageZoom($filename);
?>
希望本文所述对大家PHP程序设计有所帮助。