最近剛好需要用到一個縮圖技巧~ 所以我Google了一下~ 想找到PHP製作縮圖的方式~
而Google出來的結果發現到~ 使用官方所採用的GD library、ImageMagick 兩者較常被使用~
這裡我就直接用官方所採用的GD library來做~ 不過「聽說」ImageMagick效率較好~ 有沒有人有相關的建議呢?分享一下唄~
PHP 縮圖製作(Image Thumbnail)
HTML - 上傳頁面
<form action="ImageHandler.php" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile"/>
<input type="submit"/>
ImageHandler.php - 縮圖處理細節封裝在ImageResize.php
下述程式是以縮圖後的尺寸為「100」當基礎,所以寬度和高度的尺寸會自動地照比例縮圖~ 如果您想要客製化更多的功能~ 可以自行擴充或改寫ImageResize.php
<?php
require_once 'ImageResize.php';
$ir = new ImageResize();
$ir->readImage($_FILES['uploadfile']['tmp_name']);
$ir->thumbnailImage(100);
$ir->writeImage($_FILES['uploadfile']['name']);
$ir->destory();
?>
ImageResize.php - 處理縮圖的ImageResize Class
<?php
/**
* Date: 2008/02/28
* Shen(http://blog.ring.idv.tw)
*/
class ImageResize
{
private $src_image;
private $src_width;
private $src_height;
private $dest_image;
private $dest_width;
private $dest_height;
function __construct(){}
public function readImage($imgpath)
{
$this->src_image = imagecreatefromjpeg($imgpath);
$size = getimagesize($imgpath);
$this->src_width = $size[0];
$this->src_height = $size[1];
}
public function thumbnailImage($size)
{
if($this->src_width > $this->src_height)
{
$this->dest_width = $size;
$this->dest_height = ($this->src_height/$this->src_width)*$size;
}else{
$this->dest_height = $size;
$this->dest_width = ($this->src_width/$this->src_height)*$size;
}
$this->dest_image = imagecreatetruecolor($this->dest_width,$this->dest_height);
imagecopyresampled($this->dest_image,$this->src_image,0,0,0,0,$this->dest_width,$this->dest_height,$this->src_width,$this->src_height);
}
public function writeImage($imgpath)
{
imagejpeg($this->dest_image,$imgpath,100);
}
public function destory()
{
imagedestroy($this->src_image);
imagedestroy($this->dest_image);
}
}
?>
參考資源
.PHP: Image - Manual
.How to Resize an Image Using PHP - Image Resizing Script