本文实例讲述了php实现图片不变型裁剪及图片按比例裁剪的方法。分享给大家供大家参考,具体如下:
图片不变型裁剪
<?php
/**
* imagecropper
* @param string $source_path
* @param string $target_width
* @param string $target_height
*/
function imagecropper($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
* @param string $file
* @param double $zoom
*/
function imagezoom($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程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!