亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

PHP5:圖像縮小及格式轉換CLASS

2024-09-04 11:50:10
字體:
來源:轉載
供稿:網友
<?
/**
*
* 對圖像進行縮小,也可對png, gif, jpeg, wbmp格式的圖像進行轉換
* 需要GD庫的支持才可以,若要進行gif圖像的輸出需要GD2.0.28或更高版本才支持(或* gif的動畫轉了之后動畫變成靜畫,不知為什么!
*
* @date 2004.08.16
* @author zhouxh#im.ac.cn
*
*/
class ResizeImage {
 
const ResizeImageInfo = "本類對圖像進行縮小,也可對png, gif, jpeg, wbmp格式的圖像進行轉換";
 
//設置目標圖像的寬和高
private $height = 100;
private $width = 100;
 
//源圖像文件和目標圖像文件,若只是輸出至瀏覽器則目標圖像文件可不設置
private $sourceFile = '';
private $dstFile = '';
 
//圖像類型“image/gif、image/jpeg、image/png...”
private $imgType;
 
//源圖像句柄和目標圖像句柄
private $sim;
private $dim;
 
//是否保存圖像,用public void saveFlag(boolean $flag)方法設置
private $saveFlag = true;
 
function __construct() {
if (!function_exists('imagecreate')) {
throw new Exception('你的系統不支持GD庫');
}
}
 
function __toString() {
return ReSizeImage::ResizeImageInfo;
}
 
//設置目標圖像的寬
public function setWidth($width) {
if ($width <= 0) {
throw new Exception('目標圖像寬度不能小于0');
return ;
}
$this->width = $width;
}
 
//設置目標圖像的高
public function setHeight($height) {
if ($height <= 0) {
throw new Exception('目標圖像高度不能小于0');
return ;
}
$this->height = $height;
}
 
//設置源圖像文件
public function setSourceFile($file) {
if (!file_exists($file)) {
throw new Exception('源圖像文件不存在');
return ;
}
$this->sourceFile = $file;
}
 
//設置目標圖像文件
public function setDstFile($file) {
$this->dstFile = $file;
}
 
//設置是否生成新文件
public function saveFile($flag) {
$this->saveFlag = (boolean)$flag;
}
 
//執行繪圖操作,$quality參數表示生成圖像的效果,數字越高,效果越好,不過僅用于jpeg類型的圖像
public function draw($quality = 95) {
$sourceImgInfo = @getimagesize($this->sourceFile);
if (!is_array($sourceImgInfo)) {
throw new Exception('源圖像文件不存在');
return ;
}
switch($sourceImgInfo[2]){
case 1:
$this->imgType="image/gif";
$this->sim = imagecreatefromgif($this->sourceFile);
break;
case 2:
$this->imgType="image/jpeg";
$this->sim = imagecreatefromjpeg($this->sourceFile);
break;
case 3:
$this->imgType="image/png";
$this->sim = imagecreatefrompng($this->sourceFile);
break;
case 15:
$this->imgType="image/wbmp";
$this->sim = imagecreatefromwbmp($this->sourceFile);
break;
default:
return '不支持的圖像格式';
break;
}
 
//設置目標圖像的實際寬和高
$dstWidth = $sourceWidth = $sourceImgInfo[0];
$dstHeight = $sourceHeight = $sourceImgInfo[1];
 
if ($sourceHeight > $this->height && $sourceWidth > $this->width) {
if ($sourceHeight > $sourceWidth) {
$zoom = $this->height / $sourceHeight;
$dstHeight = $this->height;
$dstWidth = $sourceWidth * $zoom;
} else {
$zoom = $this->width / $sourceWidth;
$dstWidth = $this->width;
$dstHeight = $sourceHeight * $zoom;
}
}
 
//建立目標圖像的句柄
$this->dim = @imagecreatetruecolor($dstWidth, $dstHeight) or imagecreate($dstWidth, $dstHeight);
 
//將真彩色圖像轉換為調色板圖像
imagetruecolortopalette($this->sim, false, 256);
 
//根據源圖像顏色的總數并把它分配到目標圖像上
$palsize = ImageColorsTotal($this->sim);
for ($i = 0; $i<$palsize; $i++) {
$colors = ImageColorsForIndex($this->sim, $i);
ImageColorAllocate($this->dim, $colors['red'], $colors['green'], $colors['blue']);
}
 
//進行圖像的縮放
imagecopyresampled($this->dim, $this->sim, 0, 0, 0, 0, $dstWidth, $dstHeight, $sourceWidth, $sourceHeight);
 
//生成新的目標圖像
if ($this->saveFlag) {
$imgExt = substr($this->dstFile, strrpos($this->dstFile, '.') + 1);
switch(strtolower($imgExt)){
case 'gif':
if (!function_exists('imagegif')) {
throw new Exception('你的GD庫不支持gif圖像的輸出');
return ;
}
imagegif($this->dim, $this->dstFile);
break;
case 'jpeg':
case 'jpg':
imagejpeg($this->dim, $this->dstFile, $quality);
break;
case 'png':
imagepng($this->dim, $this->dstFile);
break;
case 'wbmp':
imagewbmp($this->dim, $this->dstFile);
break;
default:
return '目標圖像文件為空或者格式不對,無法進行保存';
break;
}
 
//直接輸出目標圖像至瀏覽器
} else {
header ("Content-type: " . $this->imgType);
switch($sourceImgInfo[2]){
case 1:
imagegif($this->dim);
break;
case 2:
imagejpeg($this->dim, '', $quality);
break;
case 3:
imagepng($this->dim);
break;
case 15:
imagewbmp($this->dim);
break;
default:
return '不支持的圖像格式';
break;
}
}
return ;
}
 
function __destruct() {
@ImageDestroy($this->sim);
@ImageDestroy($this->dim);
}
}
?>

例子1:縮小圖像后直接輸出至瀏覽器
$obj = new ReSizeImage();
$obj->setSourceFile('win.png');
$obj->saveFile(false);
$obj->setWidth(250);
$obj->setHeight(250);
$obj->draw();

例子2:縮小圖像后保存新圖像文件為“new.png”
$obj = new ReSizeImage();
$obj->setSourceFile('win.png');
$obj->setDstFile('new.png');
$obj->setWidth(250);
$obj->setHeight(250);
$obj->draw();

例子3:縮小圖像后保存新圖像文件為“new.jpg”,并設置其quality值為“100”
$obj = new ReSizeImage();
$obj->setSourceFile('win.png');
$obj->setDstFile('new.jpg');
$obj->setWidth(250);
$obj->setHeight(250);
$obj->draw(100);

例子4:捕捉程序中的異常
try {
$obj = new ReSizeImage();
$obj->setSourceFile('no.png');
$obj->saveFile(false);
$obj->setWidth(250);
$obj->setHeight(250);
$obj->draw();
} catch (Exception $ex) {
echo $ex;
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美中文在线字幕| 成人有码在线视频| 久久成人亚洲精品| 亚洲毛茸茸少妇高潮呻吟| 成人综合国产精品| 亚洲欧美国产一本综合首页| 日韩电视剧免费观看网站| 久久久久免费视频| 亚洲欧美一区二区三区情侣bbw| 国产精品黄视频| 欧美午夜激情在线| 欧美孕妇毛茸茸xxxx| 黑人巨大精品欧美一区二区三区| 欧美一区二区大胆人体摄影专业网站| 亚洲美女精品成人在线视频| 亚洲肉体裸体xxxx137| 色哟哟入口国产精品| 精品一区二区亚洲| 亲爱的老师9免费观看全集电视剧| 亚洲精品国产精品自产a区红杏吧| 日韩电影中文字幕在线观看| 欧美天堂在线观看| 在线观看视频亚洲| 欧美电影免费播放| 欧美日本亚洲视频| 国内精品在线一区| 欧美在线视频免费观看| 色在人av网站天堂精品| 国产精品三级网站| 日韩电影中文字幕一区| 茄子视频成人在线| 91亚洲精品久久久久久久久久久久| 欧美日韩亚洲系列| 免费成人高清视频| 亚洲欧美日韩久久久久久| 国产www精品| 97精品国产97久久久久久| 国产成人中文字幕| 亚洲国产91色在线| 日韩美女免费线视频| 欧美精品性视频| www.日韩视频| 亚洲a区在线视频| 欧美三级xxx| 国产精品美女视频网站| 欧美电影免费看| 亚洲国产97在线精品一区| 亚洲精品电影网| 亚洲一区二区三区sesese| 国产成人精品最新| 国产亚洲视频在线| 成人xvideos免费视频| 97国产suv精品一区二区62| 国产精品福利小视频| 高清欧美性猛交xxxx黑人猛交| 中文国产亚洲喷潮| 欧美成年人视频网站| 高清欧美性猛交| 日本欧美精品在线| 国产日韩一区在线| 中文字幕视频在线免费欧美日韩综合在线看| 久久久久久中文字幕| 欧美亚洲伦理www| 国产美女久久精品香蕉69| 久久69精品久久久久久久电影好| 国产亚洲精品久久久久动| 欧美国产在线视频| 亚洲在线观看视频| 久久久久久亚洲精品中文字幕| 亚洲精品成人久久久| 国产美女精彩久久| 日韩精品在线视频美女| 日韩在线观看免费av| 欧美极品少妇xxxxx| 高清欧美电影在线| 久久天天躁狠狠躁夜夜躁| 成人精品网站在线观看| 欧美另类99xxxxx| 久久久中精品2020中文| 欧美日韩综合视频| 97视频免费在线观看| 亚洲激情成人网| 日韩大片在线观看视频| 国产精品成人免费视频| 成人亚洲综合色就1024| 欧美黑人一级爽快片淫片高清| 中文字幕少妇一区二区三区| 91九色国产视频| 亚洲福利视频二区| 538国产精品一区二区在线| 国产a级全部精品| 国产精品九九久久久久久久| 国产精品羞羞答答| 国产精品爽黄69天堂a| 欧美国产视频一区二区| 欧美黑人巨大xxx极品| 精品中文字幕乱| 日韩av在线免播放器| 亚洲第一中文字幕| 欧美性猛交xxxx免费看久久久| 久久久av一区| 深夜福利亚洲导航| 欧美性在线观看| 久久久久一本一区二区青青蜜月| 91在线观看免费观看| 亚洲国产精品成人一区二区| 国产精品精品国产| 国产性猛交xxxx免费看久久| 国产视频精品va久久久久久| 在线国产精品播放| 在线精品国产欧美| 久久人体大胆视频| 欧美最猛黑人xxxx黑人猛叫黄| 自拍亚洲一区欧美另类| 久久99亚洲精品| 午夜精品久久久久久久99黑人| 成人免费网视频| 日韩国产精品亚洲а∨天堂免| 亚洲成人xxx| 精品无人区乱码1区2区3区在线| 日本精品久久久久久久| 欧美国产高跟鞋裸体秀xxxhd| 成人乱色短篇合集| 91精品国产自产在线观看永久| 亚洲精品理论电影| 97精品视频在线播放| 欧美性猛交xxxx富婆| 日韩大片免费观看视频播放| 久久免费在线观看| 亚洲人成欧美中文字幕| 欧美日韩国产精品一区二区不卡中文| 欧美日韩黄色大片| 欧美国产激情18| 亚洲成人a级网| 亚洲v日韩v综合v精品v| 日韩成人免费视频| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲精品国产精品乱码不99按摩| 91精品成人久久| 国产精品国产三级国产aⅴ浪潮| 中文字幕精品在线视频| 狠狠久久亚洲欧美专区| 久热在线中文字幕色999舞| 久久亚洲国产成人| 欧美在线视频免费观看| 国内精品久久久久久久| 日韩女优人人人人射在线视频| 热久久美女精品天天吊色| 91精品视频观看| 欧美性感美女h网站在线观看免费| 亚洲自拍小视频| 一区二区在线视频| 亚洲一区二区福利| 日韩中文字幕在线看| 日韩精品极品在线观看播放免费视频| 日韩av在线播放资源| 孩xxxx性bbbb欧美| 色综合91久久精品中文字幕| 久久久国产精品x99av| 亚洲午夜久久久久久久| 欧美成人sm免费视频| 欧美在线视频网站| 亚洲人成绝费网站色www| 国产欧美一区二区三区四区|