今天是

爱酷家


当前位置:首页 > 站长学院 > 其他教程

php对图片上传的处理以及图片加文字水印和图片水印的方法

收集整理   发布时间:2012-12-01 20:51:00   阅读
php对图片上传的处理以及图片加文字水印和图片水印的方法

上传图片:直接给完整测试文件:

代码:
<html>
 <title>测试上传</title>
 <body>
     <div>上传</div>
     <form action="testupload.php" method="post" enctype="multipart/form-data">
         <input type="file" name="file" /><br>
         <input type="submit" name="submit" value="提交"/>
     </form>
<?php 
 if(!empty($_FILES)){
 	print_r($_FILES);
 	if($_FILES['file']['type']=='image/jpeg' || $_FILES['file']['type']=='image/jpg' ||$_FILES['file']['type']=='image/gif' ||$_FILES['file']['type']=='image/bmp' ){
 		if($_FILES['file']['size'] < 204800){
 			$filename = $_FILES['file']['name'];
 		    $files = explode('.',$filename);
 			$type = end($files);
 			$time = date('YmdHis');
 			$head = 'testimage/';
 			$destination = $head.$time.'_'.rand(100000, 999999).'.'.$type;
 			move_uploaded_file($_FILES['file']['tmp_name'], $destination);
 			imagestring($destination, 2, 3, 15, "yes",'black');
 	        echo "<img src='".$destination."' />";
 		}else{
 			return $_FILES['file']['error'] = 2;
 		}
 	}else{
 		return $_FILES['file']['error'] = 1;
 	}
 }
?>
</body>
</html>

里面没多少号介绍的。唯一就是move_upload_file这个方法很不错。然后就是给要保存的图片找个好点的不易重复的名字,另外就是找个好地方放图片。


给图片加文字水印的做法,直接贴代码:

代码:
<?php
Header ('Content-type: image/jpg');
$destination = 'testimage/20120518035840201011191956051.jpg';
$im = imagecreatefromjpeg($destination);
$font_size = 28;
$fontname = 'C:/WINDOWS/Fonts/SIMLI.TTF';
$black = imagecolorallocate($im, 0, 0, 0);
$str = "top-giftshop";
            
imagettftext($im, $font_size,330, 10, 130, $black, $fontname, $str);
imagejpeg($im);
             
imagedestroy($im);
?>

header这个是告诉浏览器这个php文件是生成图片的。里面的jpg是需要看你生成的图片类型而定的。

$destination 是一个需要给图片加水印的原图片。

$fontname 是指定你要加文字的文字字体。这个必须是指定本机电脑里面有的字体。一般的电脑字体安装的位置都是这个。

$font_size 是要加的文字的字有多大。

$black 是指定要加的文字的颜色。

$str 是要加的文字。

imagettftext()这个是给图片开始加文字的(开始打水印)。

imagejpeg是开始生成什么类型的图片。

imagedestroy是销毁原来的资源。


给图片加图片水印:

代码:
<?php
//Header ('Content-type: image/jpg');
$backimage = 'testimage/20120518061541201011191956051.jpg'; 
$waterimage = 'testimage/logo.gif';

$water_info = getimagesize($waterimage);

//print_r($water_info);

$water_w = $water_info[0];
$water_h = $water_info[1];

$water_image = imagecreatefromgif($waterimage);
$back_image = imagecreatefromjpeg($backimage);

//imagealphablending($back_image, true);  //这句不是必要的。

imagecopy($back_image,$water_image,1,1,0,0,$water_w,$water_h);
unlink($backimage);
imagejpeg($back_image,$backimage);
imagedestroy($back_image);

echo "<img src='$backimage'>"; 

这里面的逻辑有点复杂。

简单理解就是先将两张图片转换成两个图片资源。然后再把水印这个资源复制到背景资源上面去。然后再删除原来的那个背景图片,再把这个生成的图片保存并显示出来。

更详尽的代码请看我的百度里面的资源。里面对水印的位置做了相当详细的分类。



注:⊙如转载本站原创作品,请务必包保留本文地址:

内容: