- 浏览: 675358 次
- 来自: 北京
文章分类
最新评论
-
flyer0126:
freezingsky 写道想想以前自己玩ubuntu的时候, ...
Ubuntu Gnome 1404 64位 WineQQ2013 无法运行解决 -
flyer0126:
kuchaguangjie 写道ubuntu gnome? 我 ...
Ubuntu Gnome 1404 64位 WineQQ2013 无法运行解决 -
kuchaguangjie:
ubuntu gnome? 我已经放弃 ubuntu 桌面了, ...
Ubuntu Gnome 1404 64位 WineQQ2013 无法运行解决 -
freezingsky:
想想以前自己玩ubuntu的时候,在那里wine 个QQ,就觉 ...
Ubuntu Gnome 1404 64位 WineQQ2013 无法运行解决 -
f43310:
不错,学习了!
PHP操作Mysql存储过程
PS:原创文章,如需转载,请注明出处,谢谢!
本文地址:http://flyer0126.iteye.com/blog/1662162
之前项目中应用到根据用户情况,及时生成对应个人信息的附带图片,利用到图片水印问题,今天特意封装了一个操作类,特此记录一下,以备今后之需!
/** * 水印操作类 * * 使用说明: * $wm = new WaterMark(); $wm->setImSrc('./images/123.jpg'); // 设置背景图 $wm->setImWater("./images/456.jpg"); // 设置水印图 $wm->setFont('simhei.ttf', '我就测试一下', 12, '255,0,0'); // 设置水印文字相关(字体库、文本、字体大小、颜色) $wm->mark(1, 2, 1, 9); // 设置是否打印图、位置;是否打印字体、位置 * * @author flyer0126 * @since 2012/08/24 * */ class WaterMark { // 背景图 private $im_src; // 背景图文件 private $im_src_width; // 背景图宽度 private $im_src_height; // 背景图高度 private $src_im; // 由背景图创建的新图 // 水印图 private $im_water; // 水印图文件 private $im_water_width; // 水印图宽度 private $im_water_height; // 水印图高度 private $water_im; // 由水印图创建的新图 // 字体 private $font; // 字体库 private $font_text; // 文本 private $font_size; // 字体大小 private $font_color; // 字体颜色 /** * 设置背景图 * @param $img */ function setImSrc($img) { $this->im_src = $img; //读取背景图片文件 $srcInfo = @getimagesize($this->im_src); $this->im_src_width = $srcInfo[0]; $this->im_src_height = $srcInfo[1]; //取得背景图片 $this->src_im = $this->getType($this->im_src, $srcInfo[2]); } /** * 设置水印图 * @param $img */ function setImWater($img) { $this->im_water = $img; //读取水印图片文件 $waterInfo = @getimagesize($this->im_water); $this->im_water_width = $waterInfo[0]; $this->im_water_height = $waterInfo[1]; //取得水印图片 $this->water_im = $this->getType($this->im_water, $waterInfo[2]); } /** * 设置字体 * @param $font */ function setFont($font, $text, $size, $color) { $this->font = $font; $this->font_text = $text; $this->font_size = $size; //水印文字颜色('255,255,255') $this->font_color = $color; } /** * 根据文件或URL创建一个新图象 * @param $img * @param $type * @return resource */ function getType($img, $type) { switch($type){ case 1:$im = imagecreatefromgif($img);break; case 2:$im = imagecreatefromjpeg($img);break; case 3:$im = imagecreatefrompng($img);break; default:break; } return $im; } /** * 根据位置及水印宽高,获取打印的x/y坐标 * @param $pos * @param $w * @param $h */ function getPos($pos, $w, $h) { switch($pos){ case 0://随机 $posX = rand(0, ($this->im_src_width - $w)); $posY = rand(0, ($this->im_src_height - $h)); break; case 1://1为顶端居左 $posX = 0; $posY = 0; break; case 2://2为顶端居中 $posX = ceil($this->im_src_width - $w) / 2; $posY = 0; break; case 3://3为顶端居右 $posX = $this->im_src_width - $w; $posY = 0; break; case 4://4为中部居左 $posX = 0; $posY = ceil($this->im_src_height - $h) / 2; break; case 5://5为中部居中 $posX = ceil($this->im_src_width - $w) / 2; $posY = ceil($this->im_src_height - $h) / 2; break; case 6://6为中部居右 $posX = $this->im_src_width - $w; $posY = ceil($this->im_src_height - $h) / 2; break; case 7://7为底端居左 $posX = 0; $posY = $this->im_src_height - $h; break; case 8://8为底端居中 $posX = ceil($this->im_src_width - $w) / 2; $posY = $this->im_src_height - $h; break; case 9://9为底端居右 $posX = $this->im_src_width - $w; $posY = $this->im_src_height - $h; break; default://随机 $posX = rand(0,($this->im_src_width - $w)); $posY = rand(0,($this->im_src_height - $h)); break; } return array($posX, $posY); } /** * 校验尺寸 * @param $w * @param $h * @return boolean */ function check_range($w, $h) { // 校验 if( ($this->im_src_width < $w) || ($this->im_src_height < $h) ){ return false; } return true; } /** * 打水印操作 * @param $is_image 是1否0水印图片 * @param $image_pos 水印图片位置(0~9) * @param $is_text 是1否0水印文字 * @param $text_pos 水印文字位置(0~9) * 位置:0-随机位置 * 1为顶端居左,2为顶端居中,3为顶端居右; * 4为中部居左,5为中部居中,6为中部居右; * 7为底端居左,8为底端居中,9为底端居右; */ function mark($is_image=0, $image_pos=0, $is_text=0, $text_pos=0) { // 水印图片情况 if ($is_image) { $label = '图片的'; if (!$this->check_range($this->im_water_width, $this->im_water_height)) { echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!"; return; } $posArr = $this->getPos($image_pos, $this->im_water_width, $this->im_water_height); $posX = $posArr[0]; $posY = $posArr[1]; // 拷贝水印到目标文件 imagecopy($this->src_im, $this->water_im, $posX, $posY, 0, 0, $this->im_water_width, $this->im_water_height); } // 水印文字情况 if ($is_text) { $label = '文字区域'; //取得此字体的文本的范围 $temp = imagettfbbox($this->font_size, 0, $this->font, $this->font_text); $w = $temp[2] - $temp[0]; $h = $temp[1] - $temp[7]; unset($temp); // 校验 if (!$this->check_range($w, $h)) { echo "需要加水印的图片的长度或宽度比水印".$label."还小,无法生成水印!"; return; } $posArr = $this->getPos($text_pos, $w, $h); $posX = $posArr[0]; $posY = $posArr[1]; // 打印文本 $red = imagecolorallocate($this->src_im, 255, 0, 0); imagettftext($this->src_im, $this->font_size, 0, $posX, $posY, $this->font_color, $this->font, $this->font_text); } // 输出 $this->show(); // 清理 $this->clean(); } /** * 输出图像 */ function show() { header("Content-type: image/png; charset=UTF-8"); imagepng($this->src_im); } /** * 清理 */ function clean() { imagedestroy($this->water_im); imagedestroy($this->src_im); } }
PS:最后特意申明一下,使用汉字打印的话,需要注意以下两点:
1、字体库的选择,可以是 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体) 等 GD 支持的中文字体。
之前我就是使用simsunb.ttf(简体字),song.TTF(宋体)试了很长时间,发现打印的汉字总是方框,请谨以为戒。
2、 文本编码,需要注意文本编码是否与输出一致,如不一致,请iconv 转换。
发表评论
-
API 中签名的使用
2020-02-14 12:53 508PS:原创文章,如需转载,请注明出处,谢谢! ... -
Linux安装php-vld扩展
2018-07-26 20:34 1451PS:原创文章,如需转 ... -
PHP判断内网/外网IP
2017-11-08 21:33 1288工作中用到PHP来判断内外网IP,查找资料 ... -
PHP 利用json_decode解析json为null问题解决
2017-07-04 20:21 4821PS:原创文章,如需转载,请注明出处,谢谢! ... -
PHP垃圾回收机制
2017-05-15 11:55 0PHP 5.3的新的垃圾回收机制(也就是GC)的特点。 ... -
【转】多线程下的fork及写时复制导致的性能问题
2017-01-05 10:59 1356转发文章 原文地址:h ... -
PHP浮点数精度损失问题
2016-10-28 19:42 2143首先抛出一个问题,如下类似: <?p ... -
【转】HHVM是如何提升PHP性能的?
2016-09-06 09:48 743转载文章,原文地址:http://wuduoyi.com/ ... -
【转】PHP的两个特性导致waf绕过注入
2016-08-25 10:10 10771、HPP HTTP参数污染 HTTP参数污染指的是,在 ... -
PHP之APC缓存
2016-01-25 15:29 1146一、APC缓存简介 APC,全称是Alternativ ... -
php in_array的低性能
2016-01-12 15:39 4611PS:原创文章,如需转载,请注明出处,谢谢! ... -
php 获取文件mime类型的方法
2016-01-06 16:29 1711转载文章,原文地址:http://blog.csdn.ne ... -
apt-get install php5-mcrypt 扩展查不到问题解决
2015-06-25 19:12 732问题记录,以备后期查看。 利用apt ... -
Amfphp简单使用整理
2015-03-04 19:28 2492PS:原创文章,如需转载,请注明出处,谢谢! ... -
【转】php_screw 1.5:php加密: 安装与使用
2015-01-05 18:32 1540最近想把接口P ... -
Slim与NotORM搭建轻量级curd服务实践
2014-09-04 20:05 3278PS:原创文章,如需转载,请注明出处,谢谢! ... -
Ubuntu 1404安装Nginx+php5-fpm 502问题解决
2014-08-17 17:14 2627PS:原创文章,如需 ... -
解析PHP中SESSION原理及大型网站应用注意问题
2014-08-13 15:49 1438PHP SESSION原理我们知道,session是在服务器 ... -
VtigerCRM 报错:1REAL: , ROOT: /var/www/crm/Sorry!解决
2014-08-12 12:18 2088PS:原创文章,如需转载,请注明出处,谢谢! ... -
PHP文件上传错误值
2014-07-21 18:00 722switch ($_FILES['Filedata' ...
相关推荐
php图片操作可生成等比例缩略图 和图片水印添加!
在PHP编程中,图片处理...总结来说,PHP的图片水印处理涉及到图像处理技术、配置管理以及数据库交互等多个方面。通过使用专门的类库,开发者可以简化这些复杂的操作,提高开发效率,同时确保水印效果的专业性和个性化。
在PHP开发中,图片处理是一项常见的任务,包括缩放、裁剪、添加水印等操作。这个名为"PHP图片缩放水印类.zip"的压缩包提供了一个专门用于处理这些功能的PHP类库。让我们详细了解一下这个类库的核心概念和功能。 ...
对于图片水印,GD库不支持直接添加图像,但可以先加载水印图片,再复制到主图片上。 2. **Imagick库添加水印** Imagick库提供了更丰富的功能,可以方便地添加文字和图像水印: ```php $image = new Imagick('...
"php图片水印.rar"这个压缩包文件很可能包含了一系列的PHP脚本和资源,用于帮助开发者创建自定义的图片水印功能。 首先,我们要理解图片水印的基本概念。水印可以是透明度调整的图像(如公司logo)或者是直接在图片...
在IT行业中,去水印是一项常见的需求,尤其在图片处理和视频编辑领域。"去水印后端php开源源码" 提供了一种基于PHP语言的解决方案,它允许开发者通过后端来处理去除图像或视频中的水印。下面将详细探讨这个开源项目...
如果你需要添加图片水印,可以使用`SetWatermarkImage`方法,传入图片路径和透明度: ```php $mpdf->SetWatermarkImage('path/to/watermark.png', 0.2); // 图片水印,第二个参数是透明度 ``` 5. 读取和合并PDF ...
在服务器上部署这个文件,并按照上述步骤操作,应能有效解决图片水印的乱码问题。 总之,处理服务器上的图片水印乱码问题需要对字符编码、字体库和服务器管理有深入的理解。通过适当地添加和配置字体库,我们可以...
本文将详细介绍如何使用PHP实现文字水印和图片水印的批量处理。首先,我们需要理解两个核心概念:遍历文件和添加水印。 遍历文件通常采用递归方式,通过PHP的DirectoryIterator或RecursiveDirectoryIterator类来...
总结,"php图片添加水印类.zip"提供了一套完整的解决方案,用于在PHP项目中高效、灵活地处理图片水印。通过理解并熟练运用这个类库,开发者可以提升其在图像处理方面的专业能力,简化相关任务的实现。
通过这种方式,我们可以灵活地在PHP中实现图片水印功能,适应各种应用场景。同时,这个类设计也可以方便地扩展,比如添加更多调整图片质量、尺寸等功能,以满足更复杂的需求。在实际开发中,务必注意错误处理和资源...
具体的PHP代码实现会涉及到GD库或Imagick库的使用,这些库提供了操作图片的各种函数。代码中通常会包括: 1. **图片加载**:使用GD库的`imagecreatefromjpeg`、`imagecreatefrompng`等函数加载原图。 2. **生成...
以下是一个使用Imagick添加图片水印的例子: ```php <?php $original_image = new Imagick('IMG1/image.jpg'); $watermark_image = new Imagick('path/to/watermark.png'); // 水印图片路径 // 设置水印透明度 $...
在PHP中,添加文本或水印到图片是一项常见的任务,特别是在网站开发、图像处理和证书生成等场景。这里我们将深入探讨如何使用PHP实现这一功能。 首先,PHP提供了GD库(Graphics Draw)和Imagick库来处理图像。GD库...
水印分为图片水印和文字水印,前者是将一张小图覆盖到大图上,后者则是直接在图像上绘制文字。 要实现这个功能,我们需要掌握以下几个关键知识点: 1. **GD库或Imagick库**:PHP提供了两种常用的图像处理库,GD库...
在本文中,我们将深入探讨如何使用PHP来实现给图片添加图片水印的功能。这个过程涉及到图形处理和PHP的GD库,这是一个用于创建和处理图像的内置库。首先,我们需要了解开发环境,然后逐步讲解实现这一功能的具体步骤...
首先,让我们详细解释一下“上传图片水印功能”。在网站中,有时我们需要在用户上传的图片上添加自定义的水印,以保护版权或者展示品牌标识。这通常通过在服务器端对图片进行处理来实现,即在图片上绘制文字或图像...
在PHP开发中,批量上传图片、创建缩略图以及添加文字或图片水印是常见的需求。这个场景主要用于网站内容管理,比如产品展示、新闻配图等。以下将详细讲解实现这些功能所需的知识点。 1. **PHP文件上传**:PHP提供了...
在PHP编程领域,图片水印是一项常见的功能,用于在上传的图片上添加标识或版权信息。这个名为"php小贴吧"的项目展示了如何利用PHP实现这一功能,同时提供了登录、注册、发布帖子以及后台管理等基本社区网站的操作。...
描述中提到了“具有一定的参考价值”,表明本文所提供的代码示例可以作为其他开发者进行图片水印添加操作时的参考。同时,描述也鼓励感兴趣的开发者使用本文内容,说明代码示例具有一定的通用性和易理解性。 在标签...