PHP - 圖片縮小與放大 2017-01-10
採用PHP內建的GD縮圖套件,
另外有ImageMagick套件,
如果對於影像處理不需要較多的檔案類型支援,
又沒有需要處理動態gif需求(GD雖然支援gif,但輸出的gif無法播放動態),
推薦用GD即可.
假設為縮圖限制最長邊縮至1280寬度,
兩邊皆為超過1280則不縮圖.
(這裡是我拿這個部落格縮圖的程式碼直接用,寫得不是很優)
首先須在php.ini將GD環境打開
;extension=php_gd2.dll(去掉;)$source = imagecreatefromjpeg(檔案位置); //輸入檔案位置
$src_w = imagesx($source); //偵測原始圖片寬度
$src_h = imagesy($source); //偵測原始圖片高度
//縮小圖片
if($src_w > $src_h){ //寬度大於高度
if($src_w > 1280){ //寬度超過1280
$resrc_w = 1280; //寬度為1280
$resrc_h = intval($src_h / $src_w * 1280); //依照原始比例調整高度
} else { //寬度小於1280時,則僅複製原始值
$resrc_w = $src_w;
$resrc_h = $src_h;
}
} else { //高度大於寬度
if($src_h > 1280){ //寬度大於高度
$resrc_h = 1280; //高度為1280
$resrc_w = intval($src_w / $src_h * 1280); //依照原始比例調整寬度
} else { //高度小於1280時,則僅複製原始值
$resrc_w = $src_w;
$resrc_h = $src_h;
}
}
if($src_h >= 1280 || $src_w >= 1280){ //假如有超過1280時
$newsrc = imagecreatetruecolor($resrc_w, $resrc_h); //建立新圖像
imagecopyresized($newsrc, $source, 0, 0, 0, 0, $resrc_w, $resrc_h, $src_w, $src_h); //複製圖像
//簡易銳利工具(縮圖用)
$sharpenMatrix = array( array(0, -1.0, 0), array(-1.0, 12, -1.0), array(0, -1.0, 0) ); //此處為九宮格,調整銳利強度
$divisor = array_sum(array_map('array_sum', $sharpenMatrix)); //正常為$sharpenMatrix變數的加總
$offset = 0;
imageconvolution($newsrc, $sharpenMatrix, $divisor, $offset);
imagejpeg($newsrc, $out_file , 100); //將圖像另存新檔,第三個值為圖片畫質,100為最好
imagedestroy($source); //刪除處理用圖像
imagedestroy($newsrc); //刪除處理用圖像
} else { //假如未超過1280時
$newsrc = imagecreatetruecolor($resrc_w, $resrc_h); //建立新圖像
imagecopyresized($newsrc, $source, 0, 0, 0, 0, $resrc_w, $resrc_h, $src_w, $src_h); //複製圖像
imagejpeg($newsrc, $out_file , 100); //將圖像另存新檔,第三個值為圖片畫質,100為最好
imagedestroy($source); //刪除處理用圖像
imagedestroy($newsrc); //刪除處理用圖像
}