手机
当前位置:查字典教程网 >编程开发 >php教程 >超级好用的一个php上传图片类(随机名,缩略图,加水印)
超级好用的一个php上传图片类(随机名,缩略图,加水印)
摘要:Upimages.class.phpphp上传类复制代码代码如下:使用方法复制代码代码如下:include'Upimages.class.p...

Upimages.class.php 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 "<img src='".$newSmallImg."' border='0'><br><br>";

echo "<img src='".$newMark."' border='0'><br><br>";

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

【超级好用的一个php上传图片类(随机名,缩略图,加水印)】相关文章:

浅谈PHP中JSON数据操作

解决RHAS3中Apache2的PHP上传文件大小的限制

用PHP连mysql和oracle数据库性能比较

php生成图片缩略图的方法

PHP编译安装时常见错误解决办法

一个php作的文本留言本的例子(六)

PHP整合PayPal支付

一个简单的PHP入门源程序

PHP获取数组的键与值方法小结

PHP安装memcached扩展笔记

精品推荐
分类导航