超级好用的一个php上传图片类(随机名_缩略图_加水印),超级好用的一个php上传图片类(随机名,缩略图,加水印)...

Upimages.class.php php上传类

复制代码 代码如下:

class UpImages {

var $annexFolder = "upload";//附件存放点,默认为:annex

var $smallFolder = "small";//缩略图存放路径,注:必须是放在 $annexFolder下的子目录,默认为:smallimg

var $markFolder = "mark";//水印图片存放处

var $upFileType = "jpg gif png";//上传的类型,默认为:jpg gif png rar zip

var $upFileMax = 1024;//上传大小限制,单位是“KB”,默认为:1024KB

var $fontType;//字体

var $maxWidth = 500; //图片最大宽度

var $maxHeight = 600; //图片最大高度

function UpImages($annexFolder,$smallFolder,$includeFolder) {

$this->annexFolder = $annexFolder;

$this->smallFolder = $smallFolder;

$this->fontType = $includeFolder."/04B_08__.TTF";

}

function upLoad($inputName) {

$imageName = time();//设定当前时间为图片名称

if(@empty($_FILES[$inputName]["name"])) die("没有上传图片信息,请确认");

$name = explode(".",$_FILES[$inputName]["name"]);//将上传前的文件以“.”分开取得文件类型

$imgCount = count($name);//获得截取的数量

$imgType = $name[$imgCount-1];//取得文件的类型

if(strpos($this->upFileType,$imgType) === false) die(error("上传文件类型仅支持 ".$this->upFileType." 不支持 ".$imgType));

$photo = $imageName.".".$imgType;//写入数据库的文件名

$uploadFile = $this->annexFolder."/".$photo;//上传后的文件名称

$upFileok = move_uploaded_file($_FILES[$inputName]["tmp_name"],$uploadFile);

if($upFileok) {

$imgSize = $_FILES[$inputName]["size"];

$kSize = round($imgSize/1024);

if($kSize > ($this->upFileMax*1024)) {

@unlink($uploadFile);

die(error("上传文件超过 ".$this->upFileMax."KB"));

}

} else {

die(error("上传图片失败,请确认你的上传文件不超过 $upFileMax KB 或上传时间超时"));

}

return $photo;

}

function getInfo($photo) {

$photo = $this->annexFolder."/".$photo;

$imageInfo = getimagesize($photo);

$imgInfo["width"] = $imageInfo[0];

$imgInfo["height"] = $imageInfo[1];

$imgInfo["type"] = $imageInfo[2];

$imgInfo["name"] = basename($photo);

return $imgInfo;

}

function smallImg($photo,$width=128,$height=128) {

$imgInfo = $this->getInfo($photo);

$photo = $this->annexFolder."/".$photo;//获得图片源

$newName = substr($imgInfo["name"],0,strrpos($imgInfo["name"], "."))."_thumb.jpg";//新图片名称

if($imgInfo["type"] == 1) {

$img = imagecreatefromgif($photo);

} elseif($imgInfo["type"] == 2) {

$img = imagecreatefromjpeg($photo);

} elseif($imgInfo["type"] == 3) {

$img = imagecreatefrompng($photo);

} else {

$img = "";

}

if(empty($img)) return False;

$width = ($width > $imgInfo["width"]) ? $imgInfo["width"] : $width;

$height = ($height > $imgInfo["height"]) ? $imgInfo["height"] : $height;

$srcW = $imgInfo["width"];

$srcH = $imgInfo["height"];

if ($srcW * $width > $srcH * $height) {

$height = round($srcH * $width / $srcW);

} else {

$width = round($srcW * $height / $srcH);

}

if (function_exists("imagecreatetruecolor")) {

$newImg = imagecreatetruecolor($width, $height);

ImageCopyResampled($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);

} else {

$newImg = imagecreate($width, $height);

ImageCopyResized($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);

}

if ($this->toFile) {

if (file_exists($this->annexFolder."/".$this->smallFolder."/".$newName)) @unlink($this->annexFolder."/".$this->smallFolder."/".$newName);

ImageJPEG($newImg,$this->annexFolder."/".$this->smallFolder."/".$newName);

return $this->annexFolder."/".$this->smallFolder."/".$newName;

} else {

ImageJPEG($newImg);

}

ImageDestroy($newImg);

ImageDestroy($img);

return $newName;

}

function waterMark($photo,$text) {

$imgInfo = $this->getInfo($photo);

$photo = $this->annexFolder."/".$photo;

$newName = substr($imgInfo["name"], 0, strrpos($imgInfo["name"], ".")) . "_mark.jpg";

switch ($imgInfo["type"]) {

case 1:

$img = imagecreatefromgif($photo);

break;

case 2:

$img = imagecreatefromjpeg($photo);

break;

case 3:

$img = imagecreatefrompng($photo);

break;

default:

return False;

}

if (empty($img)) return False;

$width = ($this->maxWidth > $imgInfo["width"]) ? $imgInfo["width"] : $this->maxWidth;

$height = ($this->maxHeight > $imgInfo["height"]) ? $imgInfo["height"] : $this->maxHeight;

$srcW = $imgInfo["width"];

$srcH = $imgInfo["height"];

if ($srcW * $width > $srcH * $height) {

$height = round($srcH * $width / $srcW);

} else {

$width = round($srcW * $height / $srcH);

}

if (function_exists("imagecreatetruecolor")) {

$newImg = imagecreatetruecolor($width, $height);

ImageCopyResampled($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);

} else {

$newImg = imagecreate($width, $height);

ImageCopyResized($newImg, $img, 0, 0, 0, 0, $width, $height, $imgInfo["width"], $imgInfo["height"]);

}

$white = imageColorAllocate($newImg, 255, 255, 255);

$black = imageColorAllocate($newImg, 0, 0, 0);

$alpha = imageColorAllocateAlpha($newImg, 230, 230, 230, 40);

ImageFilledRectangle($newImg, 0, $height-26, $width, $height, $alpha);

ImageFilledRectangle($newImg, 13, $height-20, 15, $height-7, $black);

ImageTTFText($newImg, 4.9, 0, 20, $height-14, $black, $this->fontType, $text[0]);

ImageTTFText($newImg, 4.9, 0, 20, $height-6, $black, $this->fontType, $text[1]);

if($this->toFile) {

if (file_exists($this->annexFolder."/".$this->markFolder."/".$newName)) @unlink($this->annexFolder."/".$this->markFolder."/".$newName);

ImageJPEG($newImg,$this->annexFolder."/".$this->markFolder."/".$newName);

return $this->annexFolder."/".$this->markFolder."/".$newName;

} else {

ImageJPEG($newImg);

}

ImageDestroy($newImg);

ImageDestroy($img);

return $newName;

}

}

?>

使用方法

复制代码 代码如下:

include 'Upimages.class.php';

$max="upload"; //文件上传路径

$mix="small"; //缩略图路径(必须在upload下建立)

$mark="mark"; //加水引的图片存放路径

$text = array("oktang","2012"); //水印内容

$img= new UpImages($max,$mix,$max); //实例化类文件

$photo = $img->upLoad("file"); //上传的文件域

$img->maxWidth = $img->maxHeight = 600; //设置高,和宽

$img->toFile = true;

$newSmallImg = $img->smallImg($photo);

$newMark = $img->waterMark($photo,$text);

echo $newSmallImg;

echo $newMark;

echo "%22.%24newSmallImg.%22
";

echo "%22.%24newMark.%22
";

注意里面有个字体文件,大家可以从网上下载。

http://www.dengb.com/PHPjc/322131.htmlwww.dengb.comtruehttp://www.dengb.com/PHPjc/322131.htmlTechArticleUpimages.class.php php上传类 复制代码 代码如下: ?php class UpImages { var $annexFolder = "upload";//附件存放点,默认为:annex var $smallFolder = "small";//缩略图...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552642.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab读取data格式,ReadData3D 各种格式图像的读取,包括医学 效果很好 matlab 272万源代码下载- www.pudn.com...

文件名称: ReadData3D下载 收藏√ [5 4 3 2 1 ]开发工具: matlab文件大小: 51 KB上传时间: 2017-03-29下载次数: 0提 供 者: 李忠宽详细说明:各种格式图像的读取,包括医学图像的读取,效果很好-Various formats of image reading, inclu…

mysql vs2008,vs2008 使用mysql

近期转到研发岗,需要用到mysql、vs2008;之前由于没有做过,写下这篇文章记录下这周所学的东西!先安装好相关软件安装时间比较久耐心等待......安装完毕之后打开vs,Tools -> opptions ->设置完毕之后,点…

matlab pretty什么用,matlab如何使输出结果更美观(symdisp函数——pretty函数升级版)...

EDA365欢迎您登录!您需要 登录 才可以下载或查看,没有帐号?注册x& t7 n0 d: a# m0 O( y- Lmatlab中有些计算结果比较长,直接查看有些困难,下面介绍pretty和symdisp函数优化输出结果,使结果更为直观。- …

php 遮罩层,Jquery实现遮罩层的方法

本文实例讲述了Jquery实现遮罩层的方法。分享给大家供大家参考。具体如下:1、假设#main为页面body中的最外层Div标签2、背景被遮罩后,显示的弹出窗(默认是不显示的,所包含的CSS这里就不贴了):xAttention!3、在script.js中定义遮罩…

nhinx php 调优,高流量站点NGINX与PHP-fpm配置优化

本文由LinuxProbe.Com团队成员岳国帅整理发布,原文来自:黑白。导读使用Nginx搭配PHP已有7年的经历,这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置。以下正是这方面的一些提示和建议:1. 将TCP切换为UNIX域套接字1. 将…

php rinit,PHP执行原理

一:PHP简介:PHP:Hypertext Preprocessor 也就是“超文本预处理器”,是一种通用的开源脚本语言。语法吸收了C语言,Java和Perl的特点,使用广泛,主要适用于Web开发领域。二:PHP的设计理…

linux 查看握手时间,实战:tcpdump抓包分析三次握手四次挥手

本文档以实战的形式介绍tcpdump抓包分析三次握手四次挥手的过程。执行tcpdump命令tcpdump -n -i ens32 host 192.168.10.10 and 42.186.113.26 >> /tmp/tcpdump.txtping game.campus.163.comcurl http://game.campus.163.comcurl http://game.campus.163.com结束后&#…

linux 高级i o函数,高级I/O函数

对于socket,最基本的输入输出函数就是,read和write。它们最基本,同样功能也是最少的。Unix中有几个函数是read/write的变种,在基本的输入输出功能上,还增加了一些非常使用的功能和特性,它们是:r…

安装linux必不可少的一个分区,安装linux系统对硬盘分区时,必须有的两种分区类型是什么?...

安装Linux系统对硬盘分区时,必须有两种分区类型: 根分区和交换分区。根分区就是root分区,所有的东西都在这个分区内。 /swap分区是交换分区,是一定磁盘空间(分区或文件),用于将部分内存中的数据换下来,以腾…

ubuntu和linux服务器,Linux服务器系统CentOS和Ubuntu Server如何选择? | 偶乃秋辰

在秋辰看来,目前最优秀的服务器系统就是Linux,但是Linux并不能说是一套完整的操作系统,准确的说它只是系统的内核,否则也不会有那么多的发行版如:Red Hat、CentOS、Debian、Ubuntu、Fedora等。其实Linux发行版系统很多…

linux 黑屏后死机,如何修复各种各样的黑屏死机

每次我们打开这些设备,我们都希望我们生活中的科技能发挥作用。当他们不能工作时,会让我们非常沮丧,尤其是当我们不知道如何解决问题时。所谓的“死亡黑屏”在操作系统之间很常见,当您打开机器,但屏幕空白。有时监视器…

cmd文件 c语言的段,对于TMS320F2812的CMD文件的理解

1.COFF格式要谈CMD文件,首先不可避免的要谈下COFF格式,COFF格式是通用目标文件格式(Common Object FileFormat)的缩写,它是一种流行的二进制可执行文件格式,在DSP里二进制可执行文件包括库文件(.lib)、目标文件(.obj)和最终可执行…

android点击事件的优先级,Android事件体系全面总结+实践分析,系列篇

前言在这一个月里,我利用闲余的时间看了下最近Android职业发展这块该怎么选择?这个问题各位大神的回答都非常透彻,相信对大家或多或少都在一定程度上有很大的帮助,今天在这里写这篇文章更多的是想以我开发十年的工作经历&#xff…

android各组件翻译,Android App框架指南(译文)

该系列文章是对Android推出的架构组件相关文章,按作者自己理解来翻译的,同时标记有作者自己一些简单笔记。如果读者发现文中有翻译不准确的地方,或者理解错误的地方,请不吝指教。源自Android官方Guide to app architecturel princ…

鸿蒙手机是个噱头,华为鸿蒙不是谈判噱头 必要时会应用手机当中!

7月30日,华为2019年上半年财报发布会上,华为董事长梁华在接受媒体采访时回应称,“鸿蒙”系统不是用来应对与美国谈判的噱头。今年5月,美国商务部将华为列入“实体清单”后不久,华为一系列“备胎”方案开始浮出水面&…

360浏览器html5无法播放,win7系统360浏览器播放不了视频的解决方法

今天和大家分享一下win7系统360浏览器播放不了视频问题的解决方法,在使用win7系统的过程中经常不知道如何去解决win7系统360浏览器播放不了视频的问题,有什么好的办法去解决win7系统360浏览器播放不了视频呢?小编教你只需要 1、视频无法正常…

html设置数字显示位数,数字万用表的显示位数和精度

数字万用表的显示位数和精度今天,我们来聊一聊数字万用表的位数和精度,到底什么是四位半?分辨率到底是哪个数?万用表的精度要如何计算?万用表的显示位数计数显示:万用表的显示位数范围。位数显示&#xff1…

w7提示无法关闭计算机,win7关不了机怎么回事?老司机教你怎么解决电脑关不了机...

win10系统的到来,慢慢的曾经称霸多年的xp已经退出了系统的舞台了,逐渐的win7也将重演历史,不过说到这个win7系统可以说是微软革命性的系统之一,其稳定、友好的界面,受到广大用户的拥戴,不过win7也有一些让人…

杭州招聘计算机专业毕业生,毕业季必看!杭州高校毕业生就业情况:这些专业最吃香!这个岗位最缺人!...

原标题:毕业季必看!杭州高校毕业生就业情况:这些专业最吃香!这个岗位最缺人!夏天,就是毕业的季节有一群人要离开校园,走上社会也有一群人要面临填志愿、选专业在杭州,什么专业最热门…

澳国立计算机录取分数,澳洲出国:2018年澳洲国立大学对高考成绩的本科录取分数线(多图)...

大师兄留学网(微信公众号:留学申请Free)是一支免费申请澳大利亚,新西兰,泰国,新加坡,马来西亚的零中介平台。大师兄留学网(微信号:Betty8990)在申请澳洲方面,有办理留学经验超过十年的学长学姐&…