php 上传加水印,php 图片上传加水印(自动增加水印)
function upload($uploadfile,$watermark=1,$watertype=1,$content){
foreach($uploadfile['name'] as $key=>$name) {??//多文件上傳函數(shù)
uploadall($uploadfile,$key,$watermark,$watertype,$content);
}
}
function uploadall($uploadfile,$i,$watermark,$watertype,$content) {
$watermark=$watermark;???????? //是否附加水印(1為加水印,其他為不加水印);
$watertype=$watertype;???????? //水印類型(1為文字,2為圖片)
$watercontent=$content;???????? //水印的內(nèi)容
if(empty($uploadfile['name'][$i])) {
die("未選擇文件上傳");
}
if($uploadfile['error'][$i] == 2) {???//驗證html判斷結(jié)果
die("上傳的文件太大了");
}
$allow_filemaxsize = 2048000;????// 2m
$filesize = $uploadfile['size'][$i];
if($filesize > $allow_filemaxsize) {
die("上傳的文件太大了");
}
$allow_filetypes = array("jpeg", "gif", "png","jpg","pjpeg");//允許上傳的文件統(tǒng)一資源類型 mimetype
$allow = false;????????//默認(rèn)都不允許
$mimetype = $uploadfile['type'][$i];??//上傳文件的mime文件類型
foreach($allow_filetypes as $t) {
if(strpos($mimetype, $t) !== false) {
$allow = true;??????//找到了符合上傳條件的文件類型
break;
}
}
if($allow == false) {
die("上傳的文件類型不被允許");
}
$result = is_uploaded_file($uploadfile['tmp_name'][$i]);???//判斷是否為上傳動作產(chǎn)生的
if(!$result) {
die("上傳的文件有誤");
}
$uploaddir = "img/";???????//上傳文件保存目錄
if(!file_exists($uploaddir)) mkdir($uploaddir, 0777, true);//若上傳保存目錄不存在,則遞歸創(chuàng)建
/**重命名文件**/
$filetype = explode(".", $uploadfile['name'][$i]);
$filetype = array_pop($filetype);
$uploadfilename = time().".".$filetype;
$_session['filename'] = $uploadfilename;
//end
$result = move_uploaded_file($uploadfile['tmp_name'][$i], $uploaddir.$uploadfilename);
if($result) {
echo? "文件上傳成功";
}else{
switch($uploadfile['error'][$i]) {
case 1:return "上傳的文件超出了php.ini中設(shè)定的最大值";break;
case 2:return "上傳的文件超出了html中設(shè)定的最大值";break;
case 3:return "文件只有部分被上傳";break;
case 4;return "沒有文件被上傳";break;
default:die("文件上傳失敗");
}
}
if($watermark==1) {
$iinfo=getimagesize($uploaddir.$uploadfilename);??//獲取圖片的相關(guān)信息,得到數(shù)組
$nimage=imagecreatetruecolor($iinfo[0],$iinfo[1]);
$white=imagecolorallocate($nimage,255,255,255); //設(shè)置背景顏色為白色
$black=imagecolorallocate($nimage,0,0,0);??//設(shè)置背景顏色為黑色
$red=imagecolorallocate($nimage,255,0,0);??//設(shè)置背景顏色為紅色
imagefill($nimage,0,0,$white);?????//背景填充為白色
switch ($iinfo[2]) {
case 1:
$simage =imagecreatefromgif($uploaddir.$uploadfilename);
break;
case 2:
$simage =imagecreatefromjpeg($uploaddir.$uploadfilename);
break;
case 3:
$simage =imagecreatefrompng($uploaddir.$uploadfilename);
break;
case 6:
$simage =imagecreatefromwbmp($uploaddir.$uploadfilename);
break;
default:
die("不支持的文件類型");
exit;
}
imagecopy($nimage,$simage,0,0,0,0,$iinfo['0'],$iinfo['1']);
switch($watertype) {
case 1:???????????? //加水印字符串
imagestring($nimage,5,$iinfo['0']/2-50,$iinfo['1']-30,$watercontent,$black);
break;
case 2:????????????//加水印圖片
$simage1 =imagecreatefromgif($watercontent);
$size = getimagesize($watercontent);
imagecopy($nimage,$simage1,$iinfo['0']/2+50,$iinfo['1']-100,0,0,$size[0],$size[1]);
imagedestroy($simage1);
break;
}
switch ($iinfo[2]) {
case 1:
imagejpeg($nimage, $uploaddir.$uploadfilename);?//將圖像$nimage以$destination文件名創(chuàng)建一個jpeg的格式文件
break;
case 2:
imagejpeg($nimage, $uploaddir.$uploadfilename);
break;
case 3:
imagepng($nimage, $uploaddir.$uploadfilename);
break;
case 6:
imagewbmp($nimage, $uploaddir.$uploadfilename);
break;
}
imagedestroy($nimage); ???//覆蓋原上傳文件
imagedestroy($simage);
}
}
if(@$_get['act'] == "insert") {????//未作參數(shù)校驗
//該函數(shù)的四個參數(shù)分別是:上傳控件的name值;是否加水印(1為加,其他數(shù)字為不佳);
//水印的類型(1為字符串,2為圖片);水印的內(nèi)容,字符串時寫數(shù)據(jù),圖片時寫圖片的地址;
$picture = upload($_files['picture'],1,2,"img/watermark.gif");//上傳文件,并返回上傳后的文件路徑名
}
?>
總結(jié)
以上是生活随笔為你收集整理的php 上传加水印,php 图片上传加水印(自动增加水印)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 多态向子类,在Java多态中调
- 下一篇: php两段音频合成一个,两段音乐合并 如