php生成縮圖的兩種方法
php語言1.98W
在php中如果要生成縮圖有什麼辦法呢?以下是小編整理的兩種方法,希望對大家有用,更多訊息請關注應屆畢業生網。 核心程式碼如下 public function getImage(){ // create instance $basePath = base_path('public/'); $md5 = 'b8c3bf0b10a81c5b6a98c527868a0000'; $sub1 = substr($md5, 0, 1); $sub2 = substr($md5, 1, 2); $subPath = sprintf("image/%s/%s/%s%s.jpg", $sub1, $sub2, $md5, '300x300'); $sourcePath = sprintf("image/%s/%s/%s.jpg", $sub1, $sub2, $md5); //截成100x80的縮圖 //$image = $this->getCropper($basePath.$sourcePath,$basePath.$subPath, 300, 300); $image = $this->getCrops($basePath.$sourcePath,$basePath.$subPath, 300, 300); } //生成縮圖 function getCropper($source_path,$NewImagePath, $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) { $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) { $cropped_width = $source_height / $target_ratio; $cropped_height = $source_height; $source_x = ($source_width - $cropped_width) / 2; $source_y = 0; } // 源圖適中 else { $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 false; break; } $target_image = imagecreatetruecolor($target_width, $target_height); $cropped_image = imagecreatetruecolor($cropped_width, $cropped_height); // 圖片裁剪 imagecopy($cropped_image, $source_image, 0, 0, $source_x, $source_y, $cropped_width, $cropped_height); // 圖片縮放 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,$NewImagePath,100); imagedestroy($source_image); imagedestroy($target_image); imagedestroy($cropped_image); } //生成縮圖,填充白邊 function getCrops($src_path,$NewImagePath,$width,$height){ //源圖物件 $src_image = imagecreatefromstring(file_get_contents($src_path)); $source_info = getimagesize($src_path); $source_mime = $source_info['mime']; $src_width = imagesx($src_image); $src_height = imagesy($src_image); switch ($source_mime) { case 'image/gif': $src_image = imagecreatefromgif($src_path); break; case 'image/jpeg': $src_image = imagecreatefromjpeg($src_path); break; case 'image/png': $src_image = imagecreatefrompng($src_path); break; default: return false; break; } //生成等比例的縮圖 //$tmp_image_width = 0; //$tmp_image_height = 0; if ($src_width / $src_height >= $width / $height) { $tmp_image_width = $width; $tmp_image_height = round($tmp_image_width * $src_height / $src_width); } else { $tmp_image_height = $height; $tmp_image_width = round($tmp_image_height * $src_width / $src_height); } $tmpImage = imagecreatetruecolor($tmp_image_width, $tmp_image_height); imagecopyresampled($tmpImage, $src_image, 0, 0, 0, 0, $tmp_image_width, $tmp_image_height, $src_width, $src_height); //新增白邊 $final_image = imagecreatetruecolor($width, $height); $color = imagecolorallocate($final_image, 255, 255, 255); imagefill($final_image, 0, 0, $color); $x = round(($width - $tmp_image_width) / 2); $y = round(($height - $tmp_image_height) / 2); imagecopy($final_image, $tmpImage, $x, $y, 0, 0, $tmp_image_width, $tmp_image_height); //輸出圖片 header('Content-Type: image/jpeg'); imagejpeg($final_image,$NewImagePath,100); imagedestroy($src_image); imagedestroy($final_image); }
-
MySQL 入門基礎知識
MySQL最流行的關係型資料庫管理系統,在WEB應用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關係資料庫管理系統)應用軟體之一。以下是小編為大家搜尋整理的MySQL入門基礎知識,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!...
-
PHP開發環境安裝的方法
PHP是一種HTML內嵌式的語言,是一種在伺服器端執行的嵌入HTML文件的指令碼語言,語言的風格有類似於C語言,被廣泛地運用。以下是小編為大家搜尋整理的PHP開發環境安裝的方法,歡迎閱讀!更多精彩內容請及時關注我們應屆畢業生考試網!一、PHP簡介PHP於1994年由RasmusLerdo...
-
PHP考試筆試題
用寶珠打扮自己,不如用知識充實自己。以下是小編為大家搜尋整理的PHP考試筆試題,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!1、{PHP題目}識別符號是變數的名稱。PHP中的識別符號用$+變數名來表示。識別符號在PHP中遵循下列選項中的那些規則?()...
-
php變數作用域的深入解析
文章是對php變數作用域進行了詳細的分析介紹,需要的朋友參考下,跟隨小編去瞧一瞧!PHP中的每個變數都有一個針對它的作用域,它是指可以在其中訪問變數(從而訪問它的值)的一個領域。對於初學者來說,變數的作用域是它們所駐留的頁面。因此,如果你定義了$var,頁面餘下部分就...