本文提供的php類用於完成圖片縮放,水印添加,當水印圖超過目標圖片尺寸時,水印圖能自動適應目標圖片而縮小,當水印圖超過目標圖片尺寸時,水印圖能自動適應目標圖片而縮小,需要的朋友可以參考下
代碼如下: <?php /** * 基本圖片處理,用於完成圖片縮入,水印添加 * 當水印圖超過目標圖片尺寸時,水印圖能自動適應目標圖片而縮小 * 水印圖可以設置跟背景的合並度 */ /* 使用方法: 自動裁切: 程序會按照圖片的尺寸從中部裁切最大的正方形,並按目標尺寸進行縮略 $t--->setSrcImg("img/test.jpg"); $t->setCutType(1);//這一句就OK了 $t->setDstImg("tmp/new_test.jpg"); $t->createImg(60,60); 手工裁切: 程序會按照指定的位置從源圖上取圖 $t->setSrcImg("img/test.jpg"); $t->setCutType(2);//指明為手工裁切 $t->setSrcCutPosition(100, 100);// 源圖起點坐標 $t->setRectangleCut(300, 200);// 裁切尺寸 $t->setDstImg("tmp/new_test.jpg"); $t->createImg(300,200); */ class ThumbHandler { var $dst_img;// 目標文件 var $h_src; // 圖片資源句柄 var $h_dst;// 新圖句柄 var $h_mask;// 水印句柄 var $img_create_quality = 100;// 圖片生成質量 var $img_display_quality = 80;// 圖片顯示質量,默認為75 var $img_scale = 0;// 圖片縮放比例 var $src_w = 0;// 原圖寬度 var $src_h = 0;// 原圖高度 var $dst_w = 0;// 新圖總寬度 var $dst_h = 0;// 新圖總高度 var $fill_w;// 填充圖形寬 var $fill_h;// 填充圖形高 var $copy_w;// 拷貝圖形寬 var $copy_h;// 拷貝圖形高 var $src_x = 0;// 原圖繪制起始橫坐標 var $src_y = 0;// 原圖繪制起始縱坐標 var $start_x;// 新圖繪制起始橫坐標 var $start_y;// 新圖繪制起始縱坐標 var $mask_word;// 水印文字 var $mask_img;// 水印圖片 var $mask_pos_x = 0;// 水印橫坐標 var $mask_pos_y = 0;// 水印縱坐標 var $mask_offset_x = 5;// 水印橫向偏移 var $mask_offset_y = 5;// 水印縱向偏移 var $font_w;// 水印字體寬 var $font_h;// 水印字體高 var $mask_w;// 水印寬 var $mask_h;// 水印高 var $mask_font_color = "#ffffff";// 水印文字顏色 var $mask_font = 2;// 水印字體 var $font_size;// 尺寸 var $mask_position = 0;// 水印位置 var $mask_img_pct = 50;// 圖片合並程度,值越大,合並程序越低 var $mask_txt_pct = 50;// 文字合並程度,值越小,合並程序越低 var $img_border_size = 0;// 圖片邊框尺寸 var $img_border_color;// 圖片邊框顏色 var $_flip_x=0;// 水平翻轉次數 var $_flip_y=0;// 垂直翻轉次數 var $cut_type=0;// 剪切類型 var $img_type;// 文件類型 // 文件類型定義,並指出了輸出圖片的函數 var $all_type = array( "jpg" => array("output"=>"imagejpeg"), "gif" => array("output"=>"imagegif"), "png" => array("output"=>"imagepng"), "wbmp" => array("output"=>"image2wbmp"), "jpeg" => array("output"=>"imagejpeg")); /** * 構造函數 */ function ThumbHandler() { $this->mask_font_color = "#ffffff"; $this->font = 2; $this->font_size = 12; } /** * 取得圖片的寬 */ function getImgWidth($src) { return imagesx($src); } /** * 取得圖片的高 */ function getImgHeight($src) { return imagesy($src); } /** * 設置圖片生成路徑 * * @param string $src_img 圖片生成路徑 */ function setSrcImg($src_img, $img_type=null) { if(!file_exists($src_img)) { die("圖片不存在"); } if(!empty($img_type)) { $this->img_type = $img_type; } else { $this->img_type = $this->_getImgType($src_img); } $this->_checkValid($this->img_type); // file_get_contents函數要求php版本>4.3.0 $src = ''; if(function_exists("file_get_contents")) { $src = file_get_contents($src_img); } else { $handle = fopen ($src_img, "r"); while (!feof ($handle)) { $src .= fgets($fd, 4096); &