PHP實(shí)現(xiàn)圖片壓縮
更新時(shí)間:2020年09月09日 13:39:20 作者:江南極客
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)圖片壓縮,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了PHP實(shí)現(xiàn)圖片壓縮的具體代碼,供大家參考,具體內(nèi)容如下
/**
* 生成圖片
* @param string $im 源圖片路徑
* @param string $dest 目標(biāo)圖片路徑
* @param int $maxwidth 生成圖片寬
* @param int $maxheight 生成圖片高
*/
function resizeImage($im, $dest, $maxwidth, $maxheight) {
$img = getimagesize($im);
switch ($img[2]) {
case 1:
$im = @imagecreatefromgif($im);
break;
case 2:
$im = @imagecreatefromjpeg($im);
break;
case 3:
$im = @imagecreatefrompng($im);
break;
}
$pic_width = imagesx($im);
$pic_height = imagesy($im);
$resizewidth_tag = false;
$resizeheight_tag = false;
if (($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) {
if ($maxwidth && $pic_width > $maxwidth) {
$widthratio = $maxwidth / $pic_width;
$resizewidth_tag = true;
}
if ($maxheight && $pic_height > $maxheight) {
$heightratio = $maxheight / $pic_height;
$resizeheight_tag = true;
}
if ($resizewidth_tag && $resizeheight_tag) {
if ($widthratio < $heightratio)
$ratio = $widthratio;
else
$ratio = $heightratio;
}
if ($resizewidth_tag && !$resizeheight_tag)
$ratio = $widthratio;
if ($resizeheight_tag && !$resizewidth_tag)
$ratio = $heightratio;
$newwidth = $pic_width * $ratio;
$newheight = $pic_height * $ratio;
if (function_exists("imagecopyresampled")) {
$newim = imagecreatetruecolor($newwidth, $newheight);
imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
} else {
$newim = imagecreate($newwidth, $newheight);
imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $pic_width, $pic_height);
}
imagejpeg($newim, $dest);
imagedestroy($newim);
} else {
imagejpeg($im, $dest);
}
}
/**
* 圖片壓縮處理
* @param string $sFile 源圖片路徑
* @param int $iWidth 自定義圖片寬度
* @param int $iHeight 自定義圖片高度
* @return string 壓縮后的圖片路徑
*/
function getThumb($sFile,$iWidth,$iHeight){
//圖片公共路徑
$public_path = '';
//判斷該圖片是否存在
if(!file_exists($public_path.$sFile)) return $sFile;
//判斷圖片格式(圖片文件后綴)
$extend = explode("." , $sFile);
$attach_fileext = strtolower($extend[count($extend) - 1]);
if (!in_array($attach_fileext, array('jpg','png','jpeg'))){
return '';
}
//壓縮圖片文件名稱
$sFileNameS = str_replace(".".$attach_fileext, "_".$iWidth.'_'.$iHeight.'.'.$attach_fileext, $sFile);
//判斷是否已壓縮圖片,若是則返回壓縮圖片路徑
if(file_exists($public_path.$sFileNameS)){
return $sFileNameS;
}
//生成壓縮圖片,并存儲(chǔ)到原圖同路徑下
resizeImage($public_path.$sFile, $public_path.$sFileNameS, $iWidth, $iHeight);
if(!file_exists($public_path.$sFileNameS)){
return $sFile;
}
return $sFileNameS;
}
使用實(shí)例:
//原圖 img/img.jpg
//生成壓縮圖 img/img_300_300.jpg
getThumb('img/img.jpg',300,300);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家,關(guān)注腳本之家公眾號(hào)的更多精彩內(nèi)容。
相關(guān)文章
使用PHPMailer實(shí)現(xiàn)郵件發(fā)送代碼分享
這篇文章主要介紹了使用PHPMailer實(shí)現(xiàn)郵件發(fā)送的代碼,以及phpmailer下載鏈接,有需要的朋友可以參考下2014-10-10
淺析Yii2 gridview實(shí)現(xiàn)批量刪除教程
在朋友圈里有童鞋向我討論GridView的問題,有朋友說(shuō)你用gridview給我去掉表頭的鏈接?我想的很久,用gridview確實(shí)不容易實(shí)現(xiàn)。有不同見解的朋友歡迎留言。但是呢,這根gridview有個(gè)毛線關(guān)聯(lián)啊,明明是要設(shè)置ActiveDataProvider,你要我怎么用gridview實(shí)現(xiàn)嘛2016-04-04
AMFPHP php遠(yuǎn)程調(diào)用(RPC, Remote Procedure Call)工具 快速入門教程
AMFPHP是PHP的遠(yuǎn)程調(diào)用(RPC, Remote Procedure Call)工具。2010-05-05
php+html5實(shí)現(xiàn)無(wú)刷新圖片上傳教程
這篇文章主要為大家介紹了php+html5實(shí)現(xiàn)無(wú)刷新圖片上傳教程,一種全新的上傳圖片的方式,利用html5的FileReader讀取圖片文件,感興趣的小伙伴們可以參考一下2016-01-01

