您现在的位置: 万盛学电脑网 >> 程序编程 >> 网络编程 >> php编程 >> 正文

php多功能图片处理类分享

作者:佚名    责任编辑:admin    更新时间:2022-06-22

 本文提供的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);       &