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