PHP實(shí)現(xiàn)圖片不變型裁剪及圖片按比例裁剪的方法
更新時(shí)間:2016年01月14日 14:45:18 作者:乘著風(fēng)在飛
這篇文章主要介紹了PHP實(shí)現(xiàn)圖片不變型裁剪及圖片按比例裁剪的方法,涉及PHP裁剪縮略圖的常用技巧,需要的朋友可以參考下
本文實(shí)例講述了PHP實(shí)現(xiàn)圖片不變型裁剪及圖片按比例裁剪的方法。分享給大家供大家參考,具體如下:
圖片不變型裁剪
<?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);
?>
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:
- php截取視頻指定幀為圖片
- PHP截取指定圖片大小的方法
- php+js實(shí)現(xiàn)圖片的上傳、裁剪、預(yù)覽、提交示例
- php使用imagick模塊實(shí)現(xiàn)圖片縮放、裁剪、壓縮示例
- PHP圖片裁剪函數(shù)(保持圖像不變形)
- php圖片的裁剪與縮放生成符合需求的縮略圖
- PHP圖片自動(dòng)裁切應(yīng)付不同尺寸的顯示
- PHP 裁剪圖片成固定大小代碼方法
- PHP結(jié)合JQueryJcrop實(shí)現(xiàn)圖片裁切實(shí)例詳解
- PHP Imagick完美實(shí)現(xiàn)圖片裁切、生成縮略圖、添加水印
- PHP實(shí)現(xiàn)圖片裁剪、添加水印效果代碼
- php結(jié)合imgareaselect實(shí)現(xiàn)圖片裁剪
- PHP全功能無(wú)變形圖片裁剪操作類(lèi)與用法示例
- php實(shí)現(xiàn)圖片按比例截取的方法
相關(guān)文章
memcached 和 mysql 主從環(huán)境下php開(kāi)發(fā)代碼詳解
一般的大站通常做法是 拿著內(nèi)存當(dāng)數(shù)據(jù)庫(kù)來(lái)用(memcached). 和很好的讀 寫(xiě)分離 備份機(jī)制 (mysql 的主從) 在這樣的環(huán)境下我們?cè)趺催M(jìn)行PHP開(kāi)發(fā)呢。2010-05-05
PHP觀察者模式實(shí)例分析【對(duì)比JS觀察者模式】
這篇文章主要介紹了PHP觀察者模式,結(jié)合實(shí)例形式對(duì)比分析JS觀察者模式實(shí)現(xiàn)方法,給出了php觀察者模式的完整定義與使用操作示例,需要的朋友可以參考下2019-05-05
php計(jì)算數(shù)組相同值出現(xiàn)次數(shù)的代碼(array_count_values)
這篇文章主要介紹了php計(jì)算數(shù)組相同值出現(xiàn)次數(shù)的代碼,需要的朋友可以參考下2015-01-01

