国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP上傳自動生成縮略圖及水印類(含代碼)

2024-05-04 21:52:57
字體:
來源:轉載
供稿:網友

思路很大一部分是原創的,但也有一些是COPY網絡的,寫得不夠規范,還請各位大大不要見笑,同時給小弟些意見。

開始第一步:
創建文件夾,布局:
annex:附件(該目錄下存放上傳的原圖片)
|— smallimg:存放縮略圖片
|— mark:存放水印圖片
include:存放類文件,字體(本程序代碼使用的是:04B_08__.TTF)
|— upfile.php:集成簡單上傳,生成縮略圖及水印的類文件信息
|— 04B_08__.TTF:字體文件
test.php:測試文件

進入第二步:
代碼研究,希望各位能好好看看,小弟也是初學者,同時也希望各位能提出寶貴意見,小弟定會虛心領教的(寫得不好不要拿雞蛋砸偶噢)


-------------------------------------------------------------------------------
upfile.php

<?php
class UPImages {
var annexFolder = "annex";//附件存放點,默認為:annex
var smallFolder = "smallimg";//縮略圖存放路徑,注:必須是放在 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(error("沒有上傳圖片信息,請確認"));
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;
}
}
?>

-------------------------------------------------------------------------

test.php
<?php
annexFolder = "annex";
smallFolder = "smallimg";
markFolder = "mark";
includeFolder = "include";

require("./".includeFolder."/upfile.php");
img = new UPImages(annexFolder,smallFolder,includeFolder);
text = array(www.dwww.cn,"all rights reserved");
if(@_GET["go"]) {
photo = img->upLoad("upfile");
img->maxWidth = img->maxHeight = 350;//設置生成水印圖像值
img->toFile = true;
newSmallImg = img->smallImg(photo);
newMark = img->waterMark(photo,text);
echo "<img src='".newSmallImg."' border='0'><br><br>";
echo "<img src='".newMark."' border='0'><br><br>";
echo "<a href='./test.php'>繼續上傳</a>";
} else {
?>
<form method="post" action="./test.php?go=go" enctype="multipart/form-data">
<input type="file" name="upfile"><br><br>
<input type="submit" value="上傳">
</form>
<?php
}
?>

來源:網絡

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 内乡县| 永城市| 寿宁县| 宁陵县| 宁城县| 侯马市| 厦门市| 三亚市| 西和县| 永仁县| 监利县| 徐汇区| 孟津县| 鲁甸县| 盘锦市| 湖北省| 益阳市| 佛坪县| 横峰县| 于都县| 黎城县| 晋城| 彭水| 晋宁县| 应城市| 高雄市| 汶川县| 武宁县| 达孜县| 板桥市| 乌审旗| 辽宁省| 秦皇岛市| 临洮县| 比如县| 兴安县| 海盐县| 万荣县| 兴业县| 杂多县| 福州市|