上传图片:直接给完整测试文件:
<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'>";
这里面的逻辑有点复杂。
简单理解就是先将两张图片转换成两个图片资源。然后再把水印这个资源复制到背景资源上面去。然后再删除原来的那个背景图片,再把这个生成的图片保存并显示出来。
更详尽的代码请看我的百度里面的资源。里面对水印的位置做了相当详细的分类。