热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP图片处理种

后端开发|php教程this,gt,mask,src,img后端开发-php教程PHP图片处理类bootstrap源码模板,ubuntu编译内核命令,tomcat启动要十分钟,20

后端开发|php教程PHP  图片处理种
this,gt,mask,src,img
后端开发-php教程
PHP 图片处理类
bootstrap源码模板,ubuntu编译内核命令,tomcat启动要十分钟,200米爬虫带,兄弟连成都春熙区PHP,广西seo技巧lzw

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); } /** * 设置图片生成路径 */ 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); } function setDstImg($dst_img) { $arr = explode('/',$dst_img); $last = array_pop($arr); $path = implode('/',$arr); $this->_mkdirs($path); $this->dst_img = $dst_img; } /** * 设置图片显路径 */ function setImgDisplayQuality($n) { $this->img_display_quality = (int)$n; } function setImgCreateQuality($n) { $this->img_create_quality = (int)$n; } function setMaskWord($word) { $this->mask_word .= $word; } function setMaskFontColor($color="#ffffff") { $this->mask_font_color = $color; } /** * 水印文件 */ function setMaskFont($fOnt=2) { if(!is_numeric($font) && !file_exists($font)) { die("字体文件不存在"); } $this->fOnt= $font; } /** * 字体大写 */ function setMaskFontSize($size = "12") { $this->font_size = $size; } //水印 function setMaskImg($img) { $this->mask_img = $img; } function setMaskOffsetX($x) { $this->mask_offset_x = (int)$x; } function setMaskOffsetY($y) { $this->mask_offset_y = (int)$y; } function setMaskPosition($position=0) { $this->mask_position = (int)$position; } function setMaskImgPct($n) { $this->mask_img_pct = (int)$n; } function setMaskTxtPct($n) { $this->mask_txt_pct = (int)$n; } 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; } function setCutType($type) { $this->cut_type = (int)$type; } function setRectangleCut($width, $height) { $this->fill_w = (int)$width; $this->fill_h = (int)$height; } function setSrcCutPosition($x, $y) { $this->src_x = (int)$x; $this->src_y = (int)$y; } function createImg($a, $b=null) { $num = func_num_args(); if(1 == $num) { $r = (int)$a; if($r img_scale = $r; $this->_setNewImgSize($r); } if(2 == $num) { $w = (int)$a; $h = (int)$b; if(0 == $w) {die("目标宽度不能为0"); } if(0 == $h) {die("目标高度不能为0"); } $this->_setNewImgSize($w, $h); } if($this->_flip_x%2!=0) { $this->_flipH($this->h_src); } if($this->_flip_y%2!=0) { $this->_flipV($this->h_src); } $this->_createMask(); $this->_output(); if(imagedestroy($this->h_src) && imagedestroy($this->h_dst)) { Return true; } else { Return false; } } /** * 生成水印,调用了生成水印文字和水印图片两个方法 */ function _createMask() { if($this->mask_word) { // 获取字体信息 $this->_setFontInfo(); if($this->_isFull()) {die("水印文字过大"); } else {$this->h_dst = imagecreatetruecolor($this->dst_w, $this->dst_h);$white = ImageColorAllocate($this->h_dst,255,255,255);imagefilledrectangle($this->h_dst,0,0,$this->dst_w,$this->dst_h,$white);// 填充背景色$this->_drawBorder();imagecopyresampled( $this->h_dst, $this->h_src, $this->start_x, $this->start_y, $this->src_x, $this->src_y, $this->fill_w, $this->fill_h, $this->copy_w, $this->copy_h);$this->_createMaskWord($this->h_dst); } }if($this->mask_img) { $this->_loadMaskImg(); //加载时,取得宽高 if($this->_isFull()) {// 将水印生成在原图上再拷$this->_createMaskImg($this->h_src);$this->h_dst = imagecreatetruecolor($this->dst_w, $this->dst_h);$white = ImageColorAllocate($this->h_dst,255,255,255);imagefilledrectangle($this->h_dst,0,0,$this->dst_w,$this->dst_h,$white);// 填充背景色$this->_drawBorder();imagecopyresampled( $this->h_dst, $this->h_src, $this->start_x, $this->start_y, $this->src_x, $this->src_y, $this->fill_w, $this->start_y, $this->copy_w, $this->copy_h); } else {// 创建新图并拷贝$this->h_dst = imagecreatetruecolor($this->dst_w, $this->dst_h);$white = ImageColorAllocate($this->h_dst,255,255,255);imagefilledrectangle($this->h_dst,0,0,$this->dst_w,$this->dst_h,$white);// 填充背景色$this->_drawBorder();imagecopyresampled( $this->h_dst, $this->h_src, $this->start_x, $this->start_y, $this->src_x, $this->src_y, $this->fill_w, $this->fill_h, $this->copy_w, $this->copy_h);$this->_createMaskImg($this->h_dst); } }if(empty($this->mask_word) && empty($this->mask_img)) { $this->h_dst = imagecreatetruecolor($this->dst_w, $this->dst_h); $white = ImageColorAllocate($this->h_dst,255,255,255); imagefilledrectangle($this->h_dst,0,0,$this->dst_w,$this->dst_h,$white);// 填充背景色 $this->_drawBorder(); imagecopyresampled( $this->h_dst, $this->h_src,$this->start_x, $this->start_y,$this->src_x, $this->src_y,$this->fill_w, $this->fill_h,$this->copy_w, $this->copy_h); } } function _drawBorder() { if(!empty($this->img_border_size)) { $c = $this->_parseColor($this->img_border_color); $color = ImageColorAllocate($this->h_src,$c[0], $c[1], $c[2]); imagefilledrectangle($this->h_dst,0,0,$this->dst_w,$this->dst_h,$color);// 填充背景色 } } function _createMaskWord($src) { $this->_countMaskPos(); $this->_checkMaskValid(); $c = $this->_parseColor($this->mask_font_color); $color = imagecolorallocatealpha($src, $c[0], $c[1], $c[2], $this->mask_txt_pct); if(is_numeric($this->font)) { imagestring($src,$this->font,$this->mask_pos_x, $this->mask_pos_y,$this->mask_word,$color); } else { imagettftext($src,$this->font_size, 0,$this->mask_pos_x, $this->mask_pos_y,$color,$this->font,$this->mask_word); } } function _createMaskImg($src) { $this->_countMaskPos(); $this->_checkMaskValid(); imagecopymerge($src,$this->h_mask,$this->mask_pos_x ,$this->mask_pos_y0, 0,$this->mask_w, $this->mask_h,$this->mask_img_pct); imagedestroy($this->h_mask); } function _loadMaskImg() { $mask_type = $this->_getImgType($this->mask_img); $this->_checkValid($mask_type); // file_get_contents函数要求php版本>4.3.0 $src = ''; if(function_exists("file_get_contents")) { $src = file_get_contents($this->mask_img); } else { $handle = fopen ($this->mask_img, "r"); while (!feof ($handle)) {$src .= fgets($fd, 4096); } fclose ($handle); } if(empty($this->mask_img)) { die("水印图片为空"); } $this->h_mask = ImageCreateFromString($src); $this->mask_w = $this->getImgWidth($this->h_mask); $this->mask_h = $this->getImgHeight($this->h_mask); } function _output() { $img_type = $this->img_type; $func_name = $this->all_type[$img_type]['output']; if(function_exists($func_name)) { // 判断浏览器,若是IE就不发送头 if(isset($_SERVER['HTTP_USER_AGENT'])) {$ua = strtoupper($_SERVER['HTTP_USER_AGENT']);if(!preg_match('/^.*MSIE.*\)$/i',$ua)){ header("Content-type:$img_type");} } $func_name($this->h_dst, $this->dst_img, $this->img_display_quality); } else { Return false; } } function _parseColor($color) { $arr = array(); for($ii=1; $ii_isFull()) { switch($this->mask_position) {case 1: $this->mask_pos_x = $this->mask_offset_x + $this->img_border_size; $this->mask_pos_y = $this->mask_offset_y + $this->img_border_sizebreak;case 2: $this->mask_pos_x = $this->mask_offset_x + $this->img_border_size; $this->mask_pos_y = $this->src_h - $this->mask_h - $this->mask_offset_ybreak;case 3: $this->mask_pos_x = $this->src_w - $this->mask_w - $this->mask_offset_x; $this->mask_pos_y = $this->mask_offset_y + $this->img_border_sizebreak;case 4: $this->mask_pos_x = $this->src_w - $this->mask_w - $this->mask_offset_x; $this->mask_pos_y = $this->src_h - $this->mask_h - $this->mask_offset_ybreak;default:// 默认将水印放到右下,偏移指定像素 $this->mask_pos_x = $this->src_w - $this->mask_w - $this->mask_offset_x; $this->mask_pos_y = $this->src_h - $this->mask_h - $this->mask_offset_ybreak; } } else { switch($this->mask_position) {case 1:// 左上 $this->mask_pos_x = $this->mask_offset_x + $this->img_border_size; $this->mask_pos_y = $this->mask_offset_y + $this->img_border_sizebreak;case 2:// 左下 $this->mask_pos_x = $this->mask_offset_x + $this->img_border_size; $this->mask_pos_y = $this->dst_h - $this->mask_h - $this->mask_offset_y - $this->img_border_sizebreak;case 3:// 右上 $this->mask_pos_x = $this->dst_w - $this->mask_w - $this->mask_offset_x - $this->img_border_size; $this->mask_pos_y = $this->mask_offset_y + $this->img_border_sizebreak;case 4:// 右下 $this->mask_pos_x = $this->dst_w - $this->mask_w - $this->mask_offset_x - $this->img_border_size; $this->mask_pos_y = $this->dst_h - $this->mask_h - $this->mask_offset_y - $this->img_border_sizebreak;default:// 默认将水印放到右下,偏移指定像素 $this->mask_pos_x = $this->dst_w - $this->mask_w - $this->mask_offset_x - $this->img_border_size; $this->mask_pos_y = $this->dst_h - $this->mask_h - $this->mask_offset_y - $this->img_border_sizebreak; } } } function _setFontInfo() { if(is_numeric($this->font)) { $this->font_w = imagefontwidth($this->font); $this->font_h = imagefontheight($this->font);// 计算水印字体所占宽高 $word_length = strlen($this->mask_word); $this->mask_w = $this->font_w*$word_length; $this->mask_h = $this->font_h; } else { $arr = imagettfbbox ($this->font_size,0, $this->font,$this->mask_word); $this->mask_w = abs($arr[0] - $arr[2]); $this->mask_h = abs($arr[7] - $arr[1]); } } //新图片大小 function _setNewImgSize($img_w, $img_h=null) { $num = func_num_args(); if(1 == $num) { $this->img_scale = $img_w;// 宽度作为比例 $this->fill_w = round($this->src_w * $this->img_scale / 100) - $this->img_border_size*2; $this->fill_h = round($this->src_h * $this->img_scale / 100) - $this->img_border_size*2;// 源文件起始坐标 $this->src_x = 0; $this->src_y = 0; $this->copy_w = $this->src_w; $this->copy_h = $this->src_h;// 目标尺寸 $this->dst_w = $this->fill_w + $this->img_border_size*2; $this->dst_h = $this->fill_h + $this->img_border_size*2; } if(2 == $num) { $fill_w = (int)$img_w - $this->img_border_size*2; $fill_h = (int)$img_h - $this->img_border_size*2; if($fill_w <0 || $fill_h src_w/$fill_w; $rate_h = $this->src_h/$fill_h; switch($this->cut_type) {case 0:// 如果原图大于缩略图,产生缩小,否则不缩小 if($rate_w <1 && $rate_h fill_w = (int)$this->src_w; $this->fill_h = (int)$this->src_h; } else { if($rate_w >= $rate_h) { $this->fill_w = (int)$fill_w; $this->fill_h = round($this->src_h/$rate_w); } else { $this->fill_w = round($this->src_w/$rate_h); $this->fill_h = (int)$fill_h; } } $this->src_x = 0; $this->src_y = 0; $this->copy_w = $this->src_w; $this->copy_h = $this->src_h;// 目标尺寸 $this->dst_w = $this->fill_w + $this->img_border_size*2; $this->dst_h = $this->fill_h + $this->img_border_size*2; break;// 自动裁切case 1:// 如果图片是缩小剪切才进行操作 if($rate_w >= 1 && $rate_h >=1) { if($this->src_w > $this->src_h) { $src_x = round($this->src_w-$this->src_h)/2; $this->setSrcCutPosition($src_x, 0); $this->setRectangleCut($fill_h, $fill_h); $this->copy_w = $this->src_h; $this->copy_h = $this->src_h; } elseif($this->src_w src_h) { $src_y = round($this->src_h-$this->src_w)/2; $this->setSrcCutPosition(0, $src_y); $this->setRectangleCut($fill_w, $fill_h); $this->copy_w = $this->src_w; $this->copy_h = $this->src_w; } else { $this->setSrcCutPosition(0, 0); $this->copy_w = $this->src_w; $this->copy_h = $this->src_w; $this->setRectangleCut($fill_w, $fill_h); } } else { $this->setSrcCutPosition(0, 0); $this->setRectangleCut($this->src_w, $this->src_h); $this->copy_w = $this->src_w; $this->copy_h = $this->src_h; } // 目标尺寸 $this->dst_w = $this->fill_w + $this->img_border_size*2; $this->dst_h = $this->fill_h + $this->img_border_size*2; break; // 手工裁切case 2:$this->copy_w = $this->fill_w; $this->copy_h = $this->fill_h; // 目标尺寸 $this->dst_w = $this->fill_w + $this->img_border_size*2; $this->dst_h = $this->fill_h + $this->img_border_size*2; break;default: break; } }// 目标文件起始坐标 $this->start_x = $this->img_border_size; $this->start_y = $this->img_border_size; } /** * 检查水印图是否大于生成后的图片宽高 */ function _isFull() { Return ( $this->mask_w + $this->mask_offset_x > $this->fill_w|| $this->mask_h + $this->mask_offset_y > $this->fill_h) ?true:false; } function _checkMaskValid() { if( $this->mask_w + $this->mask_offset_x > $this->src_w || $this->mask_h + $this->mask_offset_y > $this->src_h) { die("水印图片尺寸大于原图,请缩小水印图"); } } /** * 取得图片类型 */ function _getImgType($file_path) { $type_list = array("1"=>"gif","2"=>"jpg","3"=>"png","4"=>"swf","5" => "psd","6"=>"bmp","15"=>"wbmp"); if(file_exists($file_path)) { $img_info = @getimagesize ($file_path); if(isset($type_list[$img_info[2]])) {Return $type_list[$img_info[2]]; } } else { die("文件不存在,不能取得文件类型!"); } } /** * 检查图片类型是否合法,调用了array_key_exists函数,此函数要求 * php版本大于4.1.0 * * @param */ function _checkValid($img_type) { if(!array_key_exists($img_type, $this->all_type)) { Return false; } } /** * 按指定路径生成目录 * * @param */ function _mkdirs($path) { $adir = explode('/',$path); $dirlist = ''; $rootdir = array_shift($adir); if(($rootdir!='.'||$rootdir!='..')&&!file_exists($rootdir)) { @mkdir($rootdir); } foreach($adir as $key=>$val) { if($val!='.'&&$val!='..') {$dirlist .= "/".$val;$dirpath = $rootdir.$dirlist;if(!file_exists($dirpath)){ @mkdir($dirpath); chmod($dirpath,0777);} } } } function _flipV($src) { $src_x = $this->getImgWidth($src); $src_y = $this->getImgHeight($src); $new_im = imagecreatetruecolor($src_x, $src_y); for ($y = 0; $y h_src = $new_im; } function _flipH($src) { $src_x = $this->getImgWidth($src); $src_y = $this->getImgHeight($src); $new_im = imagecreatetruecolor($src_x, $src_y); for ($x = 0; $x h_src = $new_im; }}

?

网络摄像头控制源码,vscode扩展终端,Ubuntu nfw,tomcat8.5.12,c语言操作sqlite 3,08cms采集插件,vv7前端框架总成更换,梦见孩子肚子往外爬虫子,php 分享系统,seo课程宣传文案,网站源码有几种语言好,html5黑洞特效网页,办公门户网站模板下载lzw
??? 测试代码:
php开发实例源码下载,ubuntu连接ttl串口,net和tomcat哪个好用,爬虫入门安装,php png jpeg,seo入门教程电子版收录lzw
?

??? test.php

?

setSrcImg("test.jpg");$t->setDstImg("new_test.jpg");$t->setMaskPosition(1);$t->setMaskImgPct(80);$t->setDstImgBorder(4,"#dddddd");// 指定缩放比例$t->createImg(300,200);

?

?


推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了在使用FIS配置过程中遇到的问题以及解决方法。作者发现在配置roadmap时使用命令行参数出现了诡异现象,uglify了js文件后,html中对js的引用没有被修改。经过多次尝试和验证,联系了FIS开发人员后才得知,使用fis.config.merge会导致一些问题。通过将fis.config.merge改为fis.config.get('roadmap.path').unshift()来添加配置,问题得以解决。文章指出FIS官方文档解释不够详细,提供了解决问题的方法。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
author-avatar
不是一点都不很帅_973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有