php上传图片并生成缩位图代码
发布:smiling 来源: PHP粉丝网 添加日期:2014-08-20 09:42:59 浏览: 评论:0
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);
- }
- }
- }
- ?>
Tags: php上传图片 php生成缩位图
- 上一篇:php 图片处理函数实例教程
- 下一篇:php生成缩略图代码
相关文章
- ·php上传图片生成等比例缩略图代码(2014-08-18)
- ·php 上传图片并按比例生成指定大小图(2014-08-19)
- ·php按指定大小等比缩放生成上传图片缩略图(2014-09-09)
- ·php多个文件上传图片上传实例(2015-04-09)
- ·php简单实现批量上传图片的方法(2019-07-28)
- ·php上传图片存入数据库示例分享(2020-10-27)
- ·php实现按指定大小等比缩放生成上传图片缩略图的方法(2021-05-03)
- ·php实现上传图片保存到数据库的方法(2021-05-11)
- ·php修改上传图片尺寸的方法(2021-05-22)
- ·PHP 中 Orientation 属性判断上传图片是否需要旋转(2021-06-20)
- ·php上传图片生成缩略图(GD库)(2021-07-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)