PHP實(shí)現(xiàn)圖片不變型裁剪及圖片按比例裁剪的方法
本文實(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全功能無變形圖片裁剪操作類與用法示例
- php實(shí)現(xiàn)圖片按比例截取的方法
相關(guān)文章
整理的一些實(shí)用WordPress后臺(tái)MySQL操作命令
WordPress將其所有信息片段(包括文章、頁面、評(píng)論、博客鏈接、插件設(shè)置等)存儲(chǔ)在MySQL數(shù)據(jù)庫中。 雖然WordPress用戶可以通過網(wǎng)站后臺(tái)編輯控制以上信息片段2013-01-01
php實(shí)現(xiàn)有序數(shù)組打印或排序的方法【附Python、C及Go語言實(shí)現(xiàn)代碼】
這篇文章主要介紹了php實(shí)現(xiàn)有序數(shù)組打印或排序的方法,涉及php針對(duì)數(shù)組的遍歷、判斷、構(gòu)造與合并等常用操作技巧,并附帶了Python、C及Go語言的實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-11-11
基于php常用函數(shù)總結(jié)(數(shù)組,字符串,時(shí)間,文件操作)
本篇文章是對(duì)php常用函數(shù)(數(shù)組,字符串,時(shí)間,文件操作)進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友參考下2013-06-06
國(guó)外PHP程序員的13個(gè)好習(xí)慣小結(jié)
我是一個(gè)PHP新手,只有6個(gè)月的PHP編程經(jīng)歷,并且是在一位經(jīng)過認(rèn)證的zend工程師的指導(dǎo)下完成工作的,每當(dāng)我編寫腳本時(shí),我會(huì)注意一些能讓我做得更好的細(xì)節(jié)2012-02-02
PHP截取漢字亂碼問題解決方法mb_substr函數(shù)的應(yīng)用
利用mb_substr截取字符串不會(huì)出現(xiàn)亂碼問題,高手可以飛過......2008-03-03
php基于session實(shí)現(xiàn)數(shù)據(jù)庫交互的類實(shí)例
這篇文章主要介紹了php基于session實(shí)現(xiàn)數(shù)據(jù)庫交互的類,實(shí)例分析了php結(jié)合session操作數(shù)據(jù)庫的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的
這篇文章主要介紹了php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解決方法,是使用ZipArchive時(shí)經(jīng)常會(huì)遇到的問題,需要的朋友可以參考下2014-11-11

