php图片水印平添,压缩,剪切的封装类
php图片水印添加,压缩,剪切的封装类
php对图片文件的操作主要是利用GD库扩展。当我们频繁利用php对图片进行操作时,会自然封装很多函数,否则会写太多重复的代码。当有很多对图片的相关函数的时候,我们可以考虑将这些函数也整理一下,因而就有了封装成类的想法。
操作图片主要历经四个步骤:
- 打开图片
- 操作图片
- 输出图片
- 销毁图片
1,3,4三个步骤每次都要写,每次又都差不多。真正需要变通的只有操作图片的这一步骤了。操作图片又往往通过1或多个主要的GD函数来完成。
本文封装类里面的四种方法,文字水印(imagettftext()),图片水印(imagecopymerge()),图片压缩,图片剪切(imagecopyresampled()),其余的常用GD函数便不赘述。直接上代码:
<span style="color: #000000;">php </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Image{ </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> $info; </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> $image; </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> $type; </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> function __construct($src) { $</span><span style="color: #0000ff;">this</span>->info=<span style="color: #000000;">getimagesize($src); $</span><span style="color: #0000ff;">this</span>->type=image_type_to_extension($<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],<span style="color: #0000ff;">false</span><span style="color: #000000;">); $fun</span>=<span style="color: #800000;">"</span><span style="color: #800000;">imagecreatefrom{$this->type}</span><span style="color: #800000;">"</span><span style="color: #000000;">; $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$fun($src); } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 文字水印 * @param [type] $font 字体 * @param [type] $content 内容 * @param [type] $size 文字大小 * @param [type] $col 文字颜色(四元数组) * @param array $location 位置 * @param integer $angle 倾斜角度 * @return [type] </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span> function fontMark($font,$content,$size,$col,$location,$angle=<span style="color: #800080;">0</span><span style="color: #000000;">){ $col</span>=imagecolorallocatealpha($<span style="color: #0000ff;">this</span>->image, $col[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $col[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span>], $col[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],$col[<span style="color: #800000;">'</span><span style="color: #800000;">3</span><span style="color: #800000;">'</span><span style="color: #000000;">]); imagettftext($</span><span style="color: #0000ff;">this</span>->image, $size, $angle, $location[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $location[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">], $col,$font,$content); } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 图片水印 * @param [type] $imageMark 水印图片地址 * @param [type] $dst 水印图片在原图片中的位置 * @param [type] $pct 透明度 * @return [type] </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> function imageMark($imageMark,$dst,$pct){ $info2</span>=<span style="color: #000000;">getimagesize($imageMark); $type</span>=image_type_to_extension($info2[<span style="color: #800000;">'</span><span style="color: #800000;">2</span><span style="color: #800000;">'</span>],<span style="color: #0000ff;">false</span><span style="color: #000000;">); $func2</span>=<span style="color: #800000;">"</span><span style="color: #800000;">imagecreatefrom</span><span style="color: #800000;">"</span><span style="color: #000000;">.$type; $water</span>=<span style="color: #000000;">$func2($imageMark); imagecopymerge($</span><span style="color: #0000ff;">this</span>->image, $water, $dst[<span style="color: #800080;">0</span>], $dst[<span style="color: #800080;">1</span>], <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $info2[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $info2[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">], $pct); imagedestroy($water); } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 压缩图片 * @param [type] $thumbSize 压缩图片大小 * @return [type] [description] </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> function thumb($thumbSize){ $imageThumb</span>=imagecreatetruecolor($thumbSize[<span style="color: #800080;">0</span>], $thumbSize[<span style="color: #800080;">1</span><span style="color: #000000;">]); imagecopyresampled($imageThumb, $</span><span style="color: #0000ff;">this</span>->image, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $thumbSize[<span style="color: #800080;">0</span>], $thumbSize[<span style="color: #800080;">1</span>], $<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">0</span><span style="color: #800000;">'</span>], $<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">1</span><span style="color: #800000;">'</span><span style="color: #000000;">]); imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image); $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$imageThumb; } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 裁剪图片 * @param [type] $cutSize 裁剪大小 * @param [type] $location 裁剪位置 * @return [type] [description] </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> function cut($cutSize,$location){ $imageCut</span>=imagecreatetruecolor($cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span><span style="color: #000000;">]); imagecopyresampled($imageCut, $</span><span style="color: #0000ff;">this</span>->image, <span style="color: #800080;">0</span>, <span style="color: #800080;">0</span>, $location[<span style="color: #800080;">0</span>], $location[<span style="color: #800080;">1</span>],$cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span>],$cutSize[<span style="color: #800080;">0</span>],$cutSize[<span style="color: #800080;">1</span><span style="color: #000000;">]); imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image); $</span><span style="color: #0000ff;">this</span>->image=<span style="color: #000000;">$imageCut; } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 展现图片 * @return [type] [description] </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> function show(){ header(</span><span style="color: #800000;">"</span><span style="color: #800000;">content-type:</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">mime</span><span style="color: #800000;">'</span><span style="color: #000000;">]); $funn</span>=<span style="color: #800000;">"</span><span style="color: #800000;">image</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type; $funn($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image); } </span><span style="color: #008000;">/*</span><span style="color: #008000;">* * 保存图片 * @param [type] $newname 新图片名 * @return [type] [description] </span><span style="color: #008000;">*/</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> function save($newname){ header(</span><span style="color: #800000;">"</span><span style="color: #800000;">content-type:</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>->info[<span style="color: #800000;">'</span><span style="color: #800000;">mime</span><span style="color: #800000;">'</span><span style="color: #000000;">]); $funn</span>=<span style="color: #800000;">"</span><span style="color: #800000;">image</span><span style="color: #800000;">"</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type; $funn($</span><span style="color: #0000ff;">this</span>->image,$newname.<span style="color: #800000;">'</span><span style="color: #800000;">.</span><span style="color: #800000;">'</span>.$<span style="color: #0000ff;">this</span>-><span style="color: #000000;">type); } </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> function __destruct(){ imagedestroy($</span><span style="color: #0000ff;">this</span>-><span style="color: #000000;">image); } } </span>?>
如果还需要其他操作,只需要再往这个类里面添加就好啦~~

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

许多用户在选择智能手表的时候都会选择的华为的品牌,其中华为GT3pro和GT4都是非常热门的选择,不少用户都很好奇华为GT3pro和GT4有什么区别,下面就就给大家介绍一下二者。华为GT3pro和GT4有什么区别一、外观GT4:46mm和41mm,材质是玻璃表镜+不锈钢机身+高分纤维后壳。GT3pro:46.6mm和42.9mm,材质是蓝宝石玻璃表镜+钛金属机身/陶瓷机身+陶瓷后壳二、健康GT4:采用最新的华为Truseen5.5+算法,结果会更加的精准。GT3pro:多了ECG心电图和血管及安

为什么截图工具在Windows11上不起作用了解问题的根本原因有助于找到正确的解决方案。以下是截图工具可能无法正常工作的主要原因:对焦助手已打开:这可以防止截图工具打开。应用程序损坏:如果截图工具在启动时崩溃,则可能已损坏。过时的图形驱动程序:不兼容的驱动程序可能会干扰截图工具。来自其他应用程序的干扰:其他正在运行的应用程序可能与截图工具冲突。证书已过期:升级过程中的错误可能会导致此issu简单的解决方案这些适合大多数用户,不需要任何特殊的技术知识。1.更新窗口和Microsoft应用商店应用程

Go中Type关键字的用法有定义新的类型别名或者创建新的结构体类型。详细介绍:1、类型别名,使用“type”关键字可以为已有的类型创建别名,这种别名不会创建新的类型,只是为已有的类型提供一个新的名称,类型别名可以提高代码的可读性,使代码更加清晰;2、结构体类型,使用“type”关键字可以创建新的结构体类型,结构体是一种复合类型,可以用于定义包含多个字段的自定义类型等等。

ubuntu挂载移动硬盘出现错误:mount:unknownfilesystemtype'exfat'处理方法如下:Ubuntu13.10或安装exfat-fuse:sudoapt-getinstallexfat-fuseUbuntu13.04或以下sudoapt-add-repositoryppa:relan/exfatsudoapt-getupdatesudoapt-getinstallfuse-exfatCentOSLinux挂载exfat格式u盘错误的解决方法CentOS中加载extfa

本文将介绍七种利用免费的BingImageCreator获得高质量输出的方法。BingImageCreator(现称为MicrosoftDesigner的ImageCreator)是一个出色的在线人工智能艺术生成器之一。它能根据用户的提示生成高度逼真的视觉效果。提示越具体、清晰和创意,生成的效果也会更出色。BingImageCreator在创建高质量图像方面取得了重大进展。它现在使用Dall-E3培训模式,显示出更高水平的细节和现实主义。然而,它能否始终如一地生成高清结果取决于几个因素,包括快速

小米手机image怎么删除?在小米手机中是可以删除image,但是多数的用户不知道image如何的删除,接下来就是小编为用户带来的小米手机image删除方法教程,感兴趣的用户快来一起看看吧!小米手机image怎么删除1、首先打开小米手机中的【相册】功能;2、然后勾选不需要的图片,点击右下角的【删除】按钮;3、之后点击最顶部的【相册】进入到专区,选择【回收站】;4、接着直接点击下图所示的【清空回收站】;5、最后直接点击【永久删除】即可完成。

LINUX是一种开源的操作系统,它的灵活性和可定制性使得它成为了许多开发者和系统管理员的首选,在LINUX系统中,图像处理是一个非常重要的任务,而Imagemagick和Image是两个非常流行的图像处理工具,本文将为您介绍如何在Centos系统中安装Imagemagick和Image,并提供详细的安装教程。Imagemagic安装Centos教程Imagemagick是一个功能强大的图像处理工具集,它可以在命令行下执行各种图像操作,以下是在Centos系统上安装Imagemagick的步骤:1

第1部分:初始故障排除步骤检查苹果的系统状态:在深入研究复杂的解决方案之前,让我们从基础知识开始。问题可能不在于您的设备;苹果的服务器可能会关闭。访问Apple的系统状态页面,查看AppStore是否正常工作。如果有问题,您所能做的就是等待Apple修复它。检查您的互联网连接:确保您拥有稳定的互联网连接,因为“无法连接到AppStore”问题有时可归因于连接不良。尝试在Wi-Fi和移动数据之间切换或重置网络设置(“常规”>“重置”>“重置网络设置”>设置)。更新您的iOS版本:
