PHP圖片裁剪與縮放示例(無損裁剪圖片)
更新時間:2017年02月08日 14:06:33 作者:空の城
本篇文章主要介紹了PHP圖片裁剪與縮放示例(無損裁剪圖片),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本文介紹了PHP圖片裁剪與縮放示例,廢話不多少,具體代碼如下:
/* *exif_imagetype -- 判斷一個圖像的類型 *功能說明:函數(shù)功能是把一個圖像裁剪為任意大小的圖像,并保持圖像不變形 *參數(shù)說明:輸入 需要處理圖片的 文件名,生成新圖片的保存文件名,生成新圖片的寬,生成新圖片的高 */ // 獲得任意大小圖像,不足地方拉伸,不產(chǎn)生變形,不留下空白 function image_resize($src_file, $dst_file, $new_width, $new_height) { $new_width = intval($new_width); $new_height = intval($new_width); if ($new_width < 1 || $new_height < 1) { echo "params width or height error !"; exit(); } if (!file_exists($src_file)) { echo $src_file . " is not exists !"; exit(); } // 圖像類型 $type = exif_imagetype($src_file); $support_type = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF); if (!in_array($type, $support_type, true)) { echo "this type of image does not support! only support jpg , gif or png"; exit(); } //Load image switch($type) { case IMAGETYPE_JPEG : $src_img = imagecreatefromjpeg($src_file); break; case IMAGETYPE_PNG : $src_img = imagecreatefrompng($src_file); break; case IMAGETYPE_GIF : $src_img = imagecreatefromgif($src_file); break; default : echo "Load image error!"; exit(); } $w = imagesx($src_img); $h = imagesy($src_img); $ratio_w = 1.0 * $new_width / $w; $ratio_h = 1.0 * $new_height / $h; $ratio = 1.0; // 生成的圖像的高寬比原來的都小,或都大 ,原則是 取大比例放大,取大比例縮小(縮小的比例就比較小了) if (($ratio_w < 1 && $ratio_h < 1) || ($ratio_w > 1 && $ratio_h > 1)) { if ($ratio_w < $ratio_h) { $ratio = $ratio_h; // 情況一,寬度的比例比高度方向的小,按照高度的比例標(biāo)準(zhǔn)來裁剪或放大 } else { $ratio = $ratio_w; } // 定義一個中間的臨時圖像,該圖像的寬高比 正好滿足目標(biāo)要求 $inter_w = (int)($new_width / $ratio); $inter_h = (int)($new_height / $ratio); $inter_img = imagecreatetruecolor($inter_w, $inter_h); //var_dump($inter_img); imagecopy($inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h); // 生成一個以最大邊長度為大小的是目標(biāo)圖像$ratio比例的臨時圖像 // 定義一個新的圖像 $new_img = imagecreatetruecolor($new_width, $new_height); //var_dump($new_img);exit(); imagecopyresampled($new_img, $inter_img, 0, 0, 0, 0, $new_width, $new_height, $inter_w, $inter_h); switch($type) { case IMAGETYPE_JPEG : // 存儲圖像 imagejpeg($new_img, $dst_file, 100); break; case IMAGETYPE_PNG : imagepng($new_img, $dst_file, 100); break; case IMAGETYPE_GIF : imagegif($new_img, $dst_file, 100); break; default : break; } }// end if 1 // 2 目標(biāo)圖像 的一個邊大于原圖,一個邊小于原圖 ,先放大平普圖像,然后裁剪 // =if( ($ratio_w < 1 && $ratio_h > 1) || ($ratio_w >1 && $ratio_h <1) ) else { $ratio = $ratio_h > $ratio_w ? $ratio_h : $ratio_w; //取比例大的那個值 // 定義一個中間的大圖像,該圖像的高或?qū)捄湍繕?biāo)圖像相等,然后對原圖放大 $inter_w = (int)($w * $ratio); $inter_h = (int)($h * $ratio); $inter_img = imagecreatetruecolor($inter_w, $inter_h); //將原圖縮放比例后裁剪 imagecopyresampled($inter_img, $src_img, 0, 0, 0, 0, $inter_w, $inter_h, $w, $h); // 定義一個新的圖像 $new_img = imagecreatetruecolor($new_width, $new_height); imagecopy($new_img, $inter_img, 0, 0, 0, 0, $new_width, $new_height); switch($type) { case IMAGETYPE_JPEG : // 存儲圖像 imagejpeg($new_img, $dst_file, 100); break; case IMAGETYPE_PNG : imagepng($new_img, $dst_file, 100); break; case IMAGETYPE_GIF : imagegif($new_img, $dst_file, 100); break; default : break; } }// if3 }// end function //輸出新圖片 image_resize('test.jpg', 'demo.jpg', '1200px', '1200px');
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Zend Framework過濾器Zend_Filter用法詳解
這篇文章主要介紹了Zend Framework過濾器Zend_Filter用法,結(jié)合實(shí)例形式分析了過濾器Zend_Filter的功能、原理、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-12-12php實(shí)現(xiàn)支付寶當(dāng)面付(掃碼支付)功能
這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)支付寶當(dāng)面付,掃碼支付功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05php 提交表單 關(guān)閉layer彈窗iframe的實(shí)例講解
今天小編就為大家分享一篇php 提交表單 關(guān)閉layer彈窗iframe的實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08