热门标签 | 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);

?

?


推荐阅读
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 自己用过的一些比较有用的css3新属性【HTML】
    web前端|html教程自己用过的一些比较用的css3新属性web前端-html教程css3刚推出不久,虽然大多数的css3属性在很多流行的浏览器中不支持,但我个人觉得还是要尽量开 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • PHP插件机制的实现方案解析
    本文深入探讨了PHP中插件机制的设计与实现,旨在分享一种可行的实现方式,并邀请读者共同讨论和优化。该方案不仅涵盖了插件机制的基本概念,还详细描述了如何在实际项目中应用。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 在PHP后端开发中遇到一个难题:通过第三方类文件发送短信功能返回的JSON字符串无法解析。本文将探讨可能的原因并提供解决方案。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 将Web服务部署到Tomcat
    本文介绍了如何在JDeveloper 12c中创建一个Java项目,并将其打包为Web服务,然后部署到Tomcat服务器。内容涵盖从项目创建、编写Web服务代码、配置相关XML文件到最终的本地部署和验证。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
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社区 版权所有