PHP制作图片缩略图、加水印、加字体
2016-04-04 12:33
761 查看
下面是我提供的一个类,下面封装了这三种功能:
使用方法如下:
<?php /** * */ class ImageHelper { private $imgSrc; private $info; private $type; private $image; private $showOrSaveFunc; public function __construct($imgSrc) { $this->imgSrc = $imgSrc; $this->init(); } /** * 初始化操作 */ private function init() { //获取图片信息(通过GD库提供的方法,得到你想要处理的图片的基本信息) $this->info = getimagesize($this->imgSrc); //通过图像的编号来获取图像的类型 $this->type = image_type_to_extension($this->info[2], false); //在内存中创建一个和我们图像类型一样的图像 $fun = "imagecreatefrom{$this->type}"; //把图片复制到内存中 $this->image = $fun($this->imgSrc); $this->showOrSaveFunc = "image{$this->type}"; } /** * 给图片添加字体 * @param $fontfile 字体文件路径 * @param $text 文字内容 * @param $red 红色分量 * @param $green 绿色分量 * @param $blue 蓝色分量 * @param $alpha 透明度 * @param $angle 偏移角度 * @param $size 字体大小 * @param $x 距离左边的距离 * @param $y 距离右边的距离 */ public function addFont($fontfile, $text, $red, $green, $blue, $alpha , $angle, $size, $x, $y) { $color = imagecolorallocatealpha($this->image, $red, $green, $blue, $alpha); imagettftext($this->image, $size, $angle, $x, $y, $color, $fontfile, $text); } /** * 浏览器输出图片类型 */ private function setOutputHeader() { header("Content-Type:".$this->info['mime']); } /** * 输出图片到浏览器 */ public function outputImageToBrowser() { $this->setOutputHeader(); $this->excShowOrSaveFunc($this->showOrSaveFunc); } /** * 输出或者保存图片 */ private function excShowOrSaveFunc($type, $file='') { if ($file == '') { $type($this->image); } else { $type($this->image, $file); } } /** * 保存文件到本地 * @param 本地路径 * @param 文件名 */ public function outputImageToStorage($filepath, $filename) { $this->setOutputHeader(); $this->excShowOrSaveFunc($this->showOrSaveFunc, $filepath.$filename.'.'.$this->type); } /** * 为图片添加水印 * @param $waterMarkPath 水印图片路径 * @param $dst_x 水印距离原图左侧的距离 * @param $dst_y 水印距离原图上侧的距离 * @param $pct 水印的透明度 */ public function addWaterMark($waterMarkPath, $dst_x, $dst_y, $pct) { $waterInfo = getimagesize($waterMarkPath); $waterType = image_type_to_extension($waterInfo[2], false); $waterFun = "imagecreatefrom{$waterType}"; $waterMarkImage = $waterFun($waterMarkPath); //imagecopymerge(dst_im, src_im, dst_x, dst_y, src_x, src_y, src_w, src_h, pct) //pct透明度 imagecopymerge($this->image, $waterMarkImage, $dst_x, $dst_y, 0, 0, $waterInfo[0], $waterInfo[1], $pct); imagedestroy($waterMarkImage); } /** * 生成图片缩略图 * @param $mWidth 想要压缩的宽度 */ public function createThumbnail($mWidth) { $width = $this->info[0]; $height = $this->info[1]; if ($mWidth >= $width) { return ; } $mHeight = $height * $mWidth / $width; //1.在内存中建立一个宽300、高200的真色彩图片 $imageThumb = imagecreatetruecolor($mWidth, $mHeight); //2.核心步骤、将原图复制到新建的正色彩图片上,并按照一定比例压缩 //imagecopyresampled(dst_image, src_image, dst_x, dst_y, src_x, src_y, dst_w, dst_h, src_w, src_h) imagecopyresampled($imageThumb, $this->image, 0, 0, 0, 0, $mWidth, $mHeight, $width, $height); $this->image = $imageThumb; } /* * 销毁图片资源 */ public function destroy() { imagedestroy($this->image); } } ?>
使用方法如下:
<?php require_once 'ImageHelper.class.php'; $imageHelper = new ImageHelper('P60219-211631.jpg'); /*$imageHelper->addFont("consola.ttf", "raid", 0, 0, 0, 50 , 0, 45, 20, 20); $imageHelper->addWaterMark('pic2.jpg', 0, 0, 50);*/ $imageHelper->createThumbnail(300); // $imageHelper->outputImageToBrowser(); $imageHelper->outputImageToStorage('','testImageHelperAddFont'); $imageHelper->destroy(); ?>
相关文章推荐
- thinkphp3.2整合phpexcel
- PHP 递归实现层级树状展现数据
- php让浏览器下载txt等类型的文件
- js和php中的作用域链的理解
- 引入ping++的server SDK,thinkphp报错:unexpected 符号“,”
- PHP 的标注输入输出
- php strtotime 时间加减函数
- 蛇形矩阵,回环矩阵,数字螺旋矩阵的PHP实现
- php error_log()
- php之 i++ 和++i性能比较
- 如何在php中正确的使用json(转)
- PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
- 在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
- php文件上传的两种实现方法
- php自动加载方式集合
- PHP如何将XML转成数组
- PHP读取大文件的多种方法介绍
- php多维数组自定义排序 uasort()
- Thinkphp设置仅在调试模式关闭时显示404页面
- 生成多个不重复的随机数字php