📄 class.thumbhandler.php
字号:
<?php/** * 基本图片处理,用于完成图片缩入,水印添加 * 当水印图超过目标图片尺寸时,水印图能自动适应目标图片而缩小 * 水印图可以设置跟背景的合并度 * * Copyright(c) 2005 by ustb99. All rights reserved * * To contact the author write to {@link mailto:ustb80@163.com} * * @author 偶然 * @version $Id: thumb.class.php,v 1.9 2006/09/30 09:31:56 zengjian Exp $ * @package system */ /** * ThumbHandler * @access public */ /* 使用方法: 自动裁切: 程序会按照图片的尺寸从中部裁切最大的正方形,并按目标尺寸进行缩略 $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); } fclose ($handle); } if(empty($src)) { die("图片源为空"); } $this->h_src = @ImageCreateFromString($src); $this->src_w = $this->getImgWidth($this->h_src); $this->src_h = $this->getImgHeight($this->h_src); } /** * 设置图片生成路径 * * @param string $dst_img 图片生成路径 */ function setDstImg($dst_img) { $arr = explode('/',$dst_img); $last = array_pop($arr); $path = implode('/',$arr); $this->_mkdirs($path); $this->dst_img = $dst_img; } /** * 设置图片的显示质量 * * @param string $n 质量 */ function setImgDisplayQuality($n) { $this->img_display_quality = (int)$n; } /** * 设置图片的生成质量 * * @param string $n 质量 */ function setImgCreateQuality($n) { $this->img_create_quality = (int)$n; } /** * 设置文字水印 * * @param string $word 水印文字 * @param integer $font 水印字体 * @param string $color 水印字体颜色 */ function setMaskWord($word) { $this->mask_word .= $word; } /** * 设置字体颜色 * * @param string $color 字体颜色 */ function setMaskFontColor($color="#ffffff") { $this->mask_font_color = $color; } /** * 设置水印字体 * * @param string|integer $font 字体 */ function setMaskFont($font=2) { if(!is_numeric($font) && !file_exists($font)) { die("字体文件不存在"); } $this->font = $font; } /** * 设置文字字体大小,仅对truetype字体有效 */ function setMaskFontSize($size = "12") { $this->font_size = $size; } /** * 设置图片水印 * * @param string $img 水印图片源 */ function setMaskImg($img) { $this->mask_img = $img; } /** * 设置水印横向偏移 * * @param integer $x 横向偏移量 */ function setMaskOffsetX($x) { $this->mask_offset_x = (int)$x; } /** * 设置水印纵向偏移 * * @param integer $y 纵向偏移量 */ function setMaskOffsetY($y) { $this->mask_offset_y = (int)$y; } /** * 指定水印位置 * * @param integer $position 位置,1:左上,2:左下,3:右上,0/4:右下 */ function setMaskPosition($position=0) { $this->mask_position = (int)$position; } /** * 设置图片合并程度 * * @param integer $n 合并程度 */ function setMaskImgPct($n) { $this->mask_img_pct = (int)$n; } /** * 设置文字合并程度 * * @param integer $n 合并程度 */ function setMaskTxtPct($n) { $this->mask_txt_pct = (int)$n; } /** * 设置缩略图边框 * * @param (类型) (参数名) (描述) */ function setDstImgBorder($size=1, $color="#000000") { $this->img_border_size = (int)$size; $this->img_border_color = $color; } /** * 水平翻转 */ function flipH() { $this->_flip_x++; } /** * 垂直翻转 */ function flipV() { $this->_flip_y++; } /** * 设置剪切类型 * * @param (类型) (参数名) (描述) */ function setCutType($type) { $this->cut_type = (int)$type; } /** * 设置图片剪切 * * @param integer $width 矩形剪切 */ function setRectangleCut($width, $height) { $this->fill_w = (int)$width; $this->fill_h = (int)$height; } /** * 设置源图剪切起始坐标点 * * @param (类型) (参数名) (描述) */ function setSrcCutPosition($x, $y) { $this->src_x = (int)$x; $this->src_y = (int)$y; } /** * 创建图片,主函数 * @param integer $a 当缺少第二个参数时,此参数将用作百分比, * 否则作为宽度值 * @param integer $b 图片缩放后的高度
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -