-
php上传图片并生成缩位图代码
php上传图片并生成缩位图代码,我们时常要上传图片,但也要保留自己的版权所以就会用到图片加水印哦,下面的程序就是上传图片成功后再给图片加上你自己做的水印效果,实例代码如下:
- <?php
- class Image {
- var $imageResource = NULL;
- var $target = NULL;
- var $enableTypes = array();
- var $imageInfo = array();
- var $createFunc = '';
- var $imageType = NULL;
- /**
- * Construct for this class
- *
- * @param string $image
- * @return Image
- */
- function Image($image = NULL) {
- //get enables
- if(imagetypes() & IMG_GIF) {
- $this->enableTypes[] = 'image/gif';
- }
- if(imagetypes() & IMG_JPEG) {
- $this->enableTypes[] = 'image/jpeg';
- }
- if (imagetypes() & IMG_JPG) {
- $this->enableTypes[] = 'image/jpg';
- }
- if(imagetypes() & IMG_PNG) {
- $this->enableTypes[] = 'image/png';
- }
- //end get
- if($image != NULL) {
- $this->setImage($image);
- }
- }
- /**
- * set a image resource
- *
- * @param string $image
- * @return boolean
- */
- function setImage($image) {
- if(file_exists($image) && is_file($image)) {
- $this->imageInfo = getimagesize($image);
- $img_mime = strtolower($this->imageInfo['mime']);
- if(!in_array($img_mime, $this->enableTypes)) {
- exit('系统不能操作这种图片类型.');
- }
- switch ($img_mime) {
- case 'image/gif':
- $link = imagecreatefromgif($image);
- $this->createFunc = 'imagegif';
- $this->imageType = 'gif';
- break;
- case 'image/jpeg':
- case 'image/jpg':
- $link = imagecreatefromjpeg($image);
- $this->createFunc = 'imagejpeg';
- $this->imageType = 'jpeg';
- break;
- case 'image/png':
- $link = imagecreatefrompng($image);
- $this->createFunc = 'imagepng';
- $this->imageType = 'png';
- break;
- default:
- $link = 'unknow';
- $this->imageType = 'unknow';
- break;
- }
- if($link !== 'unknow') {
- $this->imageResource = $link;
- } else {
- exit('这种图片类型不能改变尺寸.');
- }
- unset($link);
- return true;
- } else {
- return false;
- }
- }
- /**
- * set header
- *
- */
- function setHeader() {
- switch ($this->imageType) {
- case 'gif':
- header('content-type:image/gif');
- break;
- case 'jpeg':
- header('content-type:image/jpeg');
- break;
- case 'png':
- header('content-type:image/png');
- break;
- default:
- exit('Can not set header.');
- break;
- }
- return true;
- }//开源代码phpfensi.com
- /**
- * change the image size
- *
- * @param int $width
- * @param int $height
- * @return boolean
- */
- function changeSize($width, $height = -1) {
- if(!is_resource($this->imageResource)) {
- exit('不能改变图片的尺寸,可能是你没有设置图片来源.');
- }
- $s_width = $this->imageInfo[0];
- $s_height = $this->imageInfo[1];
- $width = intval($width);
- $height = intval($height);
- if($width <= 0) exit('图片宽度必须大于零.');
- if($height <= 0) {
- $height = ($s_height / $s_width) * $width;
- }
- $this->target = imagecreatetruecolor($width, $height);
- if(@imagecopyresized($this->target, $this->imageResource, 0, 0, 0, 0, $width, $height, $s_width, $s_height))
- return true;
- else
- return false;
- }
- /**
- * Add watermark
- *
- * @param string $image
- * @param int $app
- */
- function addWatermark($image, $app = 50) {
- if(file_exists($image) && is_file($image)) {
- $s_info = getimagesize($image);
- } else {
- exit($image . '文件不存在.');
- }
- $r_width = $s_info[0];
- $r_height = $s_info[1];
- if($r_width > $this->imageInfo[0]) exit('水印图片必须小于目标图片');
- if($r_height > $this->imageInfo[1]) exit('水印图片必须小于目标图片');
- switch ($s_info['mime']) {
- case 'image/gif':
- $resource = imagecreatefromgif($image);
- break;
- case 'image/jpeg':
- case 'image/jpg':
- $resource = imagecreatefromjpeg($image);
- break;
- case 'image/png':
- $resource = imagecreatefrompng($image);
- break;
- default:
- exit($s_info['mime'] .'类型不能作为水印来源.');
- break;
- }
- $this->target = &$this->imageResource;
- imagecopymerge($this->target, $resource, $this->imageInfo[0] - $r_width - 5, $this->imageInfo[1] - $r_height - 5, 0,0 ,$r_width, $r_height, $app);
- imagedestroy($resource);
- unset($resource);
- }
- /**
- * create image
- *
- * @param string $name
- * @return boolean
- */
- function create($name = NULL) {
- $function = $this->createFunc;
- if($this->target != NULL && is_resource($this->target)) {
- if($name != NULL) {
- $function($this->target, $name);
- } else {
- $function($this->target);
- }
- return true;
- } else if($this->imageResource != NULL && is_resource($this->imageResource)) {
- if($name != NULL) {
- $function($this->imageResource, $name);
- } else {
- $function($this->imageResource);
- }
- return true;
- } else {
- exit('不能创建图片,原因可能是没有设置图片来源.');
- }
- }
- /**
- * free resource
- *
- */
- function free() {
- if(is_resource($this->imageResource)) {
- @imagedestroy($this->imageResource);
- }
- if(is_resource($this->target)) {
- @imagedestroy($this->target);
- }
- }
- }
- ?>
原文链接:http://www.phpfensi.com/php/20140820/4501.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式