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

首頁 > 網站 > 建站經驗 > 正文

常用的php圖片處理類(水印、等比縮放、固定高寬)分享

2024-04-25 20:37:32
字體:
來源:轉載
供稿:網友

常用的php圖片處理類(水印、等比縮放、固定高寬)分享

<?php

//PHP 添加水印 & 比例縮略圖 & 固定高度 & 固定寬度 類。

class Image_process{

public $source; //原圖

public $source_width; //原圖寬度

public $source_height; //原圖高度

public $source_type_id;

public $orign_name;

public $orign_dirname;


//傳入原圖路徑

public function __construct($source){

$this->typeList = array(1=>'gif',2=>'jpg',3=>'png');

$ginfo = getimagesize($source);

$this->source_width = $ginfo[0];

$this->source_height = $ginfo[1];

$this->source_type_id = $ginfo[2];

$this->orign_url = $source;

$this->orign_name = basename($source);

$this->orign_dirname = dirname($source);

}

//判斷圖片的文件的格式,返回PHP可識別的編碼

public function judgeType($type,$source){

if($type == 1){

return imagecreatefromgif($source); //gif

}else if($type == 2){

return imagecreatefromjpeg($source); //jpg

}else if($type == 3){

return imagecreatefrompng($source); //png

}else{

return false;

}

}

//生成水印圖片

public function waterMakeImage($logo){

$linfo = getimagesize($logo);

$logo_width = $linfo[0];

$logo_height = $linfo[1];

$logo_type_id = $linfo[2];

$sourceHandle = $this->judgeType($this->source_type_id,$this->orign_url);

$logoHandle = $this->judgeType($logo_type_id,$logo);

if(!$sourceHandle || !$logoHandle){

return false;

}

$x = ($this->source_width - $logo_width)/2;

$y = ($this->source_height - $logo_height)/2;

imagecopy($sourceHandle,$logoHandle,$x,$y,0,0,$logo_width,$logo_height);

$newPic = $this->orign_dirname.'/water_'.time().'.'.$this->typeList[$this->source_type_id];

if($this->saveImage($sourceHandle,$newPic)){

imagedestroy($sourceHandle);

imagedestroy($logoHandle);

}

}

//固定高度寬度

public function fixSizeImage($width,$height){

if($width > $this->source_width) $this->source_width;

if($height > $this->source_height) $this->source_height;

if($width === false){

$width = floor($this->source_width / ($this->source_height / $height));

}

if($height === false){

$height = floor($this->source_height / ($this->source_width / $width));

}

$this->tinyImage($width,$height);

}

//等比例縮放圖片

public function scaleImage($scale){

$width = floor($this->source_width * $scale);

$height = floor($this->source_height * $scale);

$this->tinyImage($width, $height);

}

//創建縮略圖

public function tinyImage($width,$height){

$tinyImage = imagecreatetruecolor($width,$height);

$handle = $this->judgeType($this->source_type_id,$this->orign_url);

if(function_exists('imagecopyresampled')){

imagecopyresampled($tinyImage, $handle, 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height);

}else{

imagecopyresized($tinyImage, $handle, 0, 0, 0, 0, $width, $height, $this->source_width, $this->source_height);

}

$newPic = $this->orign_dirname.'/thumb_'.time().'_'.$width."_".$height.".".$this->typeList[$this->source_type_id];

if($this->saveImage($tinyImage,$newPic)){

imagedestroy($tinyImage);

imagedestroy($handle);

}

}

//保存圖片

private function saveImage($image,$url){

if(imagejpeg($image,$url)){

return true;

}
}

}

$imgHandle = new Image_process('D:/AppServ/www/test/getimg/14061907445601.jpg');

//$imgHandle->waterMakeImage('D:/AppServ/www/test/getimg/shougongke.png'); //生成水印圖片

//$imgHandle->fixSizeImage(200,150); //固定長度圖片

$imgHandle->scaleImage(0.2); //等比例縮放

?>

示例二:

<?php

/**

*

* 圖像處理類

* @author FC_LAMP

* @internal功能包含:水印,縮略圖

*/

class Img
{


//圖片格式

private $exts = array ('jpg', 'jpeg', 'gif', 'bmp', 'png' );

/**

*

*

* @throws Exception

*/

public function __construct()

{

if (! function_exists ( 'gd_info' ))

{

throw new Exception ( '加載GD庫失??!' );

}

}

/**

*

* 裁剪壓縮

* @param $src_img 圖片

* @param $save_img 生成后的圖片

* @param $option 參數選項,包括: $maxwidth 寬 $maxheight 高

* array('width'=>xx,'height'=>xxx)

* @internal

* 我們一般的壓縮圖片方法,在圖片過長或過寬時生成的圖片

* 都會被“壓扁”,針對這個應采用先裁剪后按比例壓縮的方法

*/

public function thumb_img($src_img, $save_img = '', $option)

{

if (empty ( $option ['width'] ) or empty ( $option ['height'] ))

{

return array ('flag' => False, 'msg' => '原圖長度與寬度不能小于0' );

}

$org_ext = $this->is_img ( $src_img );

if (! $org_ext ['flag'])

{

return $org_ext;

}

//如果有保存路徑,則確定路徑是否正確

if (! empty ( $save_img ))

{

$f = $this->check_dir ( $save_img );

if (! $f ['flag'])

{

return $f;

}

}

//獲取出相應的方法

$org_funcs = $this->get_img_funcs ( $org_ext ['msg'] );

//獲取原大小

$source = $org_funcs ['create_func'] ( $src_img );

$src_w = imagesx ( $source );

$src_h = imagesy ( $source );

//調整原始圖像(保持圖片原形狀裁剪圖像)

$dst_scale = $option ['height'] / $option ['width']; //目標圖像長寬比

$src_scale = $src_h / $src_w; // 原圖長寬比

if ($src_scale >= $dst_scale)

{ // 過高

$w = intval ( $src_w );

$h = intval ( $dst_scale * $w );

$x = 0;

$y = ($src_h - $h) / 3;

} else

{ // 過寬

$h = intval ( $src_h );

$w = intval ( $h / $dst_scale );

$x = ($src_w - $w) / 2;

$y = 0;

}

// 剪裁

$croped = imagecreatetruecolor ( $w, $h );

imagecopy ( $croped, $source, 0, 0, $x, $y, $src_w, $src_h );

// 縮放

$scale = $option ['width'] / $w;

$target = imagecreatetruecolor ( $option ['width'], $option ['height'] );

$final_w = intval ( $w * $scale );

$final_h = intval ( $h * $scale );

imagecopyresampled ( $target, $croped, 0, 0, 0, 0, $final_w, $final_h, $w, $h );

imagedestroy ( $croped );

//輸出(保存)圖片

if (! empty ( $save_img ))

{

$org_funcs ['save_func'] ( $target, $save_img );

} else

{

header ( $org_funcs ['header'] );

$org_funcs ['save_func'] ( $target );

}

imagedestroy ( $target );

return array ('flag' => True, 'msg' => '' );

}

/**

*

* 等比例縮放圖像

* @param $src_img 原圖片

* @param $save_img 需要保存的地方

* @param $option 參數設置 array('width'=>xx,'height'=>xxx)

*

*/

function resize_image($src_img, $save_img = '', $option)

{

$org_ext = $this->is_img ( $src_img );

if (! $org_ext ['flag'])

{

return $org_ext;

}

//如果有保存路徑,則確定路徑是否正確

if (! empty ( $save_img ))

{

$f = $this->check_dir ( $save_img );

if (! $f ['flag'])

{

return $f;

}

}

//獲取出相應的方法

$org_funcs = $this->get_img_funcs ( $org_ext ['msg'] );

//獲取原大小

$source = $org_funcs ['create_func'] ( $src_img );

$src_w = imagesx ( $source );

$src_h = imagesy ( $source );

if (($option ['width'] && $src_w > $option ['width']) || ($option ['height'] && $src_h > $option ['height']))

{

if ($option ['width'] && $src_w > $option ['width'])

{

$widthratio = $option ['width'] / $src_w;

$resizewidth_tag = true;

}

if ($option ['height'] && $src_h > $option ['height'])

{

$heightratio = $option ['height'] / $src_h;

$resizeheight_tag = true;

}

if ($resizewidth_tag && $resizeheight_tag)

{

if ($widthratio < $heightratio)

$ratio = $widthratio;

else

$ratio = $heightratio;

}

if ($resizewidth_tag && ! $resizeheight_tag)

$ratio = $widthratio;

if ($resizeheight_tag && ! $resizewidth_tag)

$ratio = $heightratio;

$newwidth = $src_w * $ratio;

$newheight = $src_h * $ratio;

if (function_exists ( "imagecopyresampled" ))

{

$newim = imagecreatetruecolor ( $newwidth, $newheight );

imagecopyresampled ( $newim, $source, 0, 0, 0, 0, $newwidth, $newheight, $src_w, $src_h );

} else

{

$newim = imagecreate ( $newwidth, $newheight );

imagecopyresized ( $newim, $source, 0, 0, 0, 0, $newwidth, $newheight, $src_w, $src_h );

}

}

//輸出(保存)圖片

if (! empty ( $save_img ))

{

$org_funcs ['save_func'] ( $newim, $save_img );

} else

{

header ( $org_funcs ['header'] );

$org_funcs ['save_func'] ( $newim );

}

imagedestroy ( $newim );

return array ('flag' => True, 'msg' => '' );

}

/**

*

* 生成水印圖片

* @param $org_img 原圖像

* @param $mark_img 水印標記圖像

* @param $save_img 當其目錄不存在時,會試著創建目錄

* @param array $option 為水印的一些基本設置包含:

* x:水印的水平位置,默認為減去水印圖寬度后的值

* y:水印的垂直位置,默認為減去水印圖高度后的值

* alpha:alpha值(控制透明度),默認為50

*/

public function water_mark($org_img, $mark_img, $save_img = '', $option = array())

{

//檢查圖片

$org_ext = $this->is_img ( $org_img );

if (! $org_ext ['flag'])

{

return $org_ext;

}

$mark_ext = $this->is_img ( $mark_img );

if (! $mark_ext ['flag'])

{

return $mark_ext;

}

//如果有保存路徑,則確定路徑是否正確

if (! empty ( $save_img ))

{

$f = $this->check_dir ( $save_img );

if (! $f ['flag'])

{

return $f;

}

}

//獲取相應畫布

$org_funcs = $this->get_img_funcs ( $org_ext ['msg'] );

$org_img_im = $org_funcs ['create_func'] ( $org_img );

$mark_funcs = $this->get_img_funcs ( $mark_ext ['msg'] );

$mark_img_im = $mark_funcs ['create_func'] ( $mark_img );

//拷貝水印圖片坐標

$mark_img_im_x = 0;

$mark_img_im_y = 0;

//拷貝水印圖片高寬

$mark_img_w = imagesx ( $mark_img_im );

$mark_img_h = imagesy ( $mark_img_im );

$org_img_w = imagesx ( $org_img_im );

$org_img_h = imagesx ( $org_img_im );

//合成生成點坐標

$x = $org_img_w - $mark_img_w;

$org_img_im_x = isset ( $option ['x'] ) ? $option ['x'] : $x;

$org_img_im_x = ($org_img_im_x > $org_img_w or $org_img_im_x < 0) ? $x : $org_img_im_x;

$y = $org_img_h - $mark_img_h;

$org_img_im_y = isset ( $option ['y'] ) ? $option ['y'] : $y;

$org_img_im_y = ($org_img_im_y > $org_img_h or $org_img_im_y < 0) ? $y : $org_img_im_y;

//alpha

$alpha = isset ( $option ['alpha'] ) ? $option ['alpha'] : 50;

$alpha = ($alpha > 100 or $alpha < 0) ? 50 : $alpha;

//合并圖片

imagecopymerge ( $org_img_im, $mark_img_im, $org_img_im_x, $org_img_im_y, $mark_img_im_x, $mark_img_im_y, $mark_img_w, $mark_img_h, $alpha );

//輸出(保存)圖片

if (! empty ( $save_img ))

{

$org_funcs ['save_func'] ( $org_img_im, $save_img );

} else

{

header ( $org_funcs ['header'] );

$org_funcs ['save_func'] ( $org_img_im );

}

//銷毀畫布

imagedestroy ( $org_img_im );

imagedestroy ( $mark_img_im );

return array ('flag' => True, 'msg' => '' );

}

/**

*

* 檢查圖片

* @param unknown_type $img_path

* @return array('flag'=>true/false,'msg'=>ext/錯誤信息)

*/

private function is_img($img_path)

{

if (! file_exists ( $img_path ))

{

return array ('flag' => False, 'msg' => "加載圖片 $img_path 失?。?quot; );

}

$ext = explode ( '.', $img_path );

$ext = strtolower ( end ( $ext ) );

if (! in_array ( $ext, $this->exts ))

{

return array ('flag' => False, 'msg' => "圖片 $img_path 格式不正確!" );

}

return array ('flag' => True, 'msg' => $ext );

}

/**

*

* 返回正確的圖片函數

* @param unknown_type $ext

*/

private function get_img_funcs($ext)

{

//選擇

switch ($ext)

{

case 'jpg' :

$header = 'Content-Type:image/jpeg';

$createfunc = 'imagecreatefromjpeg';

$savefunc = 'imagejpeg';

break;

case 'jpeg' :

$header = 'Content-Type:image/jpeg';

$createfunc = 'imagecreatefromjpeg';

$savefunc = 'imagejpeg';

break;

case 'gif' :

$header = 'Content-Type:image/gif';

$createfunc = 'imagecreatefromgif';

$savefunc = 'imagegif';

break;

case 'bmp' :

$header = 'Content-Type:image/bmp';

$createfunc = 'imagecreatefrombmp';

$savefunc = 'imagebmp';

break;

default :

$header = 'Content-Type:image/png';

$createfunc = 'imagecreatefrompng';

$savefunc = 'imagepng';

}

return array ('save_func' => $savefunc, 'create_func' => $createfunc, 'header' => $header );

}

/**

*

* 檢查并試著創建目錄

* @param $save_img

*/

private function check_dir($save_img)

{

$dir = dirname ( $save_img );

if (! is_dir ( $dir ))

{

if (! mkdir ( $dir, 0777, true ))

{

return array ('flag' => False, 'msg' => "圖片保存目錄 $dir 無法創建!" );

}

}

return array ('flag' => True, 'msg' => '' );

}

}

if (! empty ( $_FILES ['test'] ['tmp_name'] ))

{

//例子

$img = new Img ();

//原圖

$name = explode ( '.', $_FILES ['test'] ['name'] );

$org_img = 'D:/test.' . end ( $name );

move_uploaded_file ( $_FILES ['test'] ['tmp_name'], $org_img );

$option = array ('width' => $_POST ['width'], 'height' => $_POST ['height'] );

if ($_POST ['type'] == 1)

{

$s = $img->resize_image ( $org_img, '', $option );

} else

{

$img->thumb_img ( $org_img, '', $option );

}

unlink ( $org_img );

}

以上所述就是本文的全部內容了,希望大家能夠喜歡。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国模视频一区二区| 日韩av成人在线| 国产综合视频在线观看| 91久热免费在线视频| 国自在线精品视频| 欧美日韩国产va另类| 国产精品久久久久久久美男| 色偷偷av一区二区三区| 久久在精品线影院精品国产| 国产欧美日韩精品在线观看| 亚洲一区二区三区乱码aⅴ| 欧美老少做受xxxx高潮| 精品一区精品二区| 伊人久久五月天| 青青草国产精品一区二区| 日韩成人激情在线| 欧美日韩综合视频| 麻豆乱码国产一区二区三区| 麻豆国产精品va在线观看不卡| 亚洲sss综合天堂久久| 亚洲综合精品伊人久久| 亚洲一区二区三区成人在线视频精品| 欧美又大又硬又粗bbbbb| 亚洲自拍在线观看| 色偷偷888欧美精品久久久| 亚洲日韩欧美视频一区| 成人深夜直播免费观看| 精品视频久久久久久久| 亚洲欧洲一区二区三区久久| 日韩免费观看视频| 国产精品最新在线观看| 91在线免费网站| 亚洲欧美日韩中文在线| 欧美激情久久久久| www.日韩不卡电影av| 亚洲精品永久免费精品| 日韩欧亚中文在线| 国产精品高潮呻吟久久av黑人| 国产精品欧美风情| 国产精品毛片a∨一区二区三区|国| 美日韩丰满少妇在线观看| 久久综合88中文色鬼| www.日韩.com| 欧美高跟鞋交xxxxxhd| 91高清视频免费观看| 欧美中文在线观看国产| 中文字幕日韩在线观看| 中文字幕亚洲欧美日韩在线不卡| 日韩电影视频免费| 久久久亚洲天堂| 日日噜噜噜夜夜爽亚洲精品| 大量国产精品视频| 欧美美女操人视频| 日韩av在线网| 日韩av电影手机在线观看| 国产z一区二区三区| 亚洲国产成人久久综合| 亚洲系列中文字幕| 狠狠躁天天躁日日躁欧美| 91在线视频九色| 日韩精品在线观看视频| 日韩欧美高清在线视频| 国产精品久久电影观看| 久久99热精品这里久久精品| 红桃av永久久久| 日本久久久久久久久久久| 国产一区二区久久精品| 国产精品扒开腿做爽爽爽男男| 欧美精品一区二区三区国产精品| 91夜夜未满十八勿入爽爽影院| 亚洲最大av在线| 亚洲女同性videos| 国产精品成人av性教育| 高清一区二区三区四区五区| 久久久免费精品| 日本一区二三区好的精华液| 国产精品色午夜在线观看| 欧美性videos高清精品| 日韩av免费在线播放| 欧美情侣性视频| 91成人免费观看网站| 97在线观看视频国产| 国产精品久久久久久久久久ktv| 久久99久久99精品中文字幕| 亚洲有声小说3d| 欧美激情综合色综合啪啪五月| 91精品国产综合久久男男| 在线观看国产欧美| 91九色在线视频| 福利一区视频在线观看| 国产精品视频公开费视频| 欧美亚洲一区在线| 久久av中文字幕| 中文字幕最新精品| 亚洲免费视频一区二区| 日韩免费在线电影| 亚洲男女自偷自拍图片另类| 91日本在线观看| 国产精品无av码在线观看| 亚洲一区二区三区xxx视频| 在线观看视频亚洲| 久久免费福利视频| 国产欧美日韩中文字幕在线| 亚洲精品中文字幕有码专区| 日韩精品一区二区视频| 精品视频9999| 亚洲色在线视频| 国内精品免费午夜毛片| 国产精品视频一| 午夜精品一区二区三区在线视| 日韩欧美黄色动漫| 热久久视久久精品18亚洲精品| 国产精品福利在线| 日韩欧美极品在线观看| 精品国产自在精品国产浪潮| 国产精品久久久久9999| 国产综合在线看| 亚洲人成人99网站| 日韩av在线免费| 国产+人+亚洲| 欧美成人免费一级人片100| www国产精品视频| 91精品国产91久久久| 亚洲美女av黄| 美女久久久久久久久久久| 国产精品www| 美女扒开尿口让男人操亚洲视频网站| 欧美性猛交xxxxx免费看| 免费97视频在线精品国自产拍| 国产精品成人aaaaa网站| 亚洲人成电影网| 亚洲精品国产suv| 亚洲欧美另类在线观看| 97在线看福利| 国产丝袜高跟一区| 亚洲偷欧美偷国内偷| 亚洲无限av看| 国产ts一区二区| 国产精品va在线| 成人国产精品免费视频| 成人黄色免费网站在线观看| 国产+成+人+亚洲欧洲| 久久福利网址导航| 国产女精品视频网站免费| 亚洲成人在线网| 狠狠爱在线视频一区| 日本aⅴ大伊香蕉精品视频| 日韩精品久久久久久福利| 91精品久久久久久久| 91九色单男在线观看| 亚洲精品国产美女| 久久99视频免费| 欧美精品久久一区二区| 欧美大尺度激情区在线播放| 狠狠干狠狠久久| 日本精品久久久| 日韩在线观看网址| 久久夜色撩人精品| 亚洲精品成人网| 久久天天躁日日躁| 欧美成人午夜视频| 丰满岳妇乱一区二区三区| 色七七影院综合| 亚洲伊人第一页|