php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2015-01-24信息快讯网
php gd2 上传图片/文字水印/图片水印/等比例缩略图/源代码,需要的朋友可以参考下。
<?php //上传文件类型列表 $uptypes=array( 'image/jpg', 'image/jpeg', 'image/png', 'image/pjpeg', 'image/gif', 'image/bmp', 'image/x-png' ); $max_file_size = 200000; //上传文件大小限制, 单位BYTE $path_im = "prod_img/"; //生成大图保存文件夹路径 $path_sim = "prod_simg/"; //缩略图保存文件夹路径 $watermark = 1; //是否加水印(1为加水印,其他为不加水印); $watertype = 1; //水印类型(1为文字,2为图片) $waterstring = "[url=http://www.jy17.com/]http://www.jy17.com/[/url]"; //水印字符串 $waterimg = "water.png"; //水印图片文件路径 $waterclearly = 100; //水印透明度0-100,数字小透明高 $imclearly = 100; //图片清晰度0-100,数字越大越清晰,文件尺寸越大 $simclearly = 75; //缩略图清晰度0-100,数字越大越清晰,文件尺寸越大 $smallmark = 1; //是否生成缩略图(1为加生成,其他为不); $dst_sw = 80; //定义缩略图宽度,高度我采用等比例缩放,所以只要比较宽度就可以了 ?> <form enctype="multipart/form-data" method="post" name="upform"> 上传文件: <input name="upfile" type="file"> <input type="submit" value="上传"><br> 允许上传的文件类型为:<?=implode(',',$uptypes)?> </form> <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (!is_uploaded_file($_FILES["upfile"][tmp_name])) //是否存在文件 { echo "图片不存在!"; exit; } $file = $_FILES["upfile"]; if($max_file_size < $file["size"]) //检查文件大小 { $max_file_size = $max_file_size/1000; echo "文件太大,超过 ".$max_file_size." KB!"; exit; } if(!in_array($file["type"],$uptypes)) //检查文件类型 { echo "文件类型不符!".$file["type"]; exit; } if(!file_exists($path_im)) //检查上传目录是否存在,不存在创建 { mkdir($path_im); } if(!file_exists($path_sim)) //检查缩略图目录是否存在,不存在创建 { mkdir($path_sim); } $filename = $file["tmp_name"]; $im_size = getimagesize($filename); $src_w = $im_size[0]; $src_h = $im_size[1]; $src_type = $im_size[2]; $pinfo = pathinfo($file["name"]); $filetype = $pinfo['extension']; $all_path = $path_im.time().".".$filetype; //路径+文件名,目前以上传时间命名 if (file_exists($all_path)) { echo "同名文件已经存在了"; exit; } if(!move_uploaded_file ($filename,$all_path)) { echo "移动文件出错"; exit; } $pinfo = pathinfo($all_path); $fname = $pinfo[basename]; echo "<font color=red>已经成功上传</font><br>文件名: <font color=blue>".$all_path."</font><br>"; echo "宽度:".$src_w."px "; echo "长度:".$src_h."px "; echo "<br> 大小:".$file["size"]." bytes"; switch($src_type)//判断源图片文件类型 { case 1://gif $src_im = imagecreatefromgif($all_path);//从源图片文件取得图像 break; case 2://jpg $src_im = imagecreatefromjpeg($all_path); break; case 3://png $src_im = imagecreatefrompng($all_path); break; //case 6: //$src_im=imagecreatefromwbmp($all_path); //break; default: die("不支持的文件类型"); exit; } if($watermark == 1) { //$iinfo = getimagesize($all_path,$iinfo); $dst_im = imagecreatetruecolor($src_w,$src_h); //根据原图尺寸创建一个相同大小的真彩色位图 $white = imagecolorallocate($dst_im,255,255,255);//白 //给新图填充背景色 $black = imagecolorallocate($dst_im,0,0,0);//黑 $red = imagecolorallocate($dst_im,255,0,0);//红 $orange = imagecolorallocate($dst_im,255,85,0);//橙 imagefill($dst_im,0,0,$white); imagecopymerge($dst_im,$src_im,0,0,0,0,$src_w,$src_h,100);//原图图像写入新建真彩位图中 //imagefilledrectangle($dst_im,1,$src_h-15,80,$src_h,$white); switch($watertype) { case 1: //加水印字符串 imagestring($dst_im,5,5,$src_h-20,$waterstring,$orange);//文字水印,字体5号颜色橙色,位于背景图左下角 break; case 2: //加水印图片 $lim_size = getimagesize($waterimg); //取得水印图像尺寸,信息 switch($lim_size[2]) //判断水印图片文件类型 { case 1://gif $src_lim = imagecreatefromgif($waterimg); //取得水印图像 break; case 2://jpg $src_lim = imagecreatefromjpeg($waterimg); break; case 3://png $src_lim = imagecreatefrompng($waterimg); break; //case 6: //$src_im=imagecreatefromwbmp($waterimg); //break; default: die("不支持的文件类型"); exit; } $src_lw = ($src_w-$lim_size[0])/2; //水印位于背景图正中央width定位 $src_lh = ($src_h-$lim_size[1])/2; //height定位 imagecopymerge($dst_im,$src_lim,$src_lw,$src_lh,0,0,$lim_size[0],$lim_size[1],$waterclearly);// 合并两个图像,设置水印透明度$waterclearly imagedestroy($src_lim); break; } switch($src_type) { case 1: imagegif($dst_im,$all_path,$imclearly);//生成gif文件,图片清晰度0-100 break; case 2: imagejpeg($dst_im,$all_path,$imclearly);//生成jpg文件,图片清晰度0-100 break; case 3: imagepng($dst_im,$all_path,$imclearly);//生成png文件,图片清晰度0-100 break; //case 6: //imagewbmp($dst_im,$all_path); break; } //释放缓存 imagedestroy($dst_im); } if($smallmark == 1) { $sall_path = $path_sim.time().".".$filetype; if (file_exists($sall_path)) { echo "同名文件已经存在了"; exit; } if($src_w <= $dst_sw) // 原图尺寸 <= 缩略图尺寸 { $dst_sim = imagecreatetruecolor($src_w,$src_h); //新建缩略图真彩位图 imagecopymerge($dst_sim,$src_im,0,0,0,0,$src_w,$src_h,100); //原图图像写入新建真彩位图中 } if($src_w > $dst_sw) // 原图尺寸 > 缩略图尺寸 { $dst_sh = $dst_sw/$src_w*$src_h; $dst_sim = imagecreatetruecolor($dst_sw,$dst_sh); //新建缩略图真彩位图(等比例缩小原图尺寸) imagecopyresampled($dst_sim,$src_im,0,0,0,0,$dst_sw,$dst_sh,$src_w,$src_h); //原图图像写入新建真彩位图中 } switch($src_type) { case 1: imagegif($dst_sim,$sall_path,$simclearly);//生成gif文件,图片清晰度0-100 break; case 2: imagejpeg($dst_sim,$sall_path,$simclearly);//生成jpg文件,图片清晰度0-100 break; case 3: imagepng($dst_sim,$sall_path,$simclearly);//生成png文件,图片清晰度0-100 break; //case 6: //imagewbmp($dst_sim,$sall_path); break; } //释放缓存 imagedestroy($dst_sim); } //释放缓存 imagedestroy($src_im); } ?>
php等比例生成缩略图函数2
function reSizeImg($imgSrc, $resize_width, $resize_height, $isCut=false) { //图片的类型 $type = substr ( strrchr ( $imgSrc, "." ), 1 ); //初始化图象 if ($type == "jpg") { $im = imagecreatefromjpeg ( $imgSrc ); } if ($type == "gif") { $im = imagecreatefromgif ( $imgSrc ); } if ($type == "png") { $im = imagecreatefrompng ( $imgSrc ); } //目标图象地址 $full_length = strlen ( $imgSrc ); $type_length = strlen ( $type ); $name_length = $full_length - $type_length; $name = substr ( $imgSrc, 0, $name_length - 1 ); $dstimg = $name . "_s." . $type; $width = imagesx ( $im ); $height = imagesy ( $im ); //生成图象 //改变后的图象的比例 $resize_ratio = ($resize_width) / ($resize_height); //实际图象的比例 $ratio = ($width) / ($height); if (($isCut) == 1) //裁图 { if ($ratio >= $resize_ratio) //高度优先 { $newimg = imagecreatetruecolor ( $resize_width, $resize_height ); imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, (($height) * $resize_ratio), $height ); ImageJpeg ( $newimg, $dstimg ); } if ($ratio < $resize_ratio) //宽度优先 { $newimg = imagecreatetruecolor ( $resize_width, $resize_height ); imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, $width, (($width) / $resize_ratio) ); ImageJpeg ( $newimg, $dstimg ); } } else //不裁图 { if ($ratio >= $resize_ratio) { $newimg = imagecreatetruecolor ( $resize_width, ($resize_width) / $ratio ); imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, ($resize_width) / $ratio, $width, $height ); ImageJpeg ( $newimg, $dstimg ); } if ($ratio < $resize_ratio) { $newimg = imagecreatetruecolor ( ($resize_height) * $ratio, $resize_height ); imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, ($resize_height) * $ratio, $resize_height, $width, $height ); ImageJpeg ( $newimg, $dstimg ); } } ImageDestroy ( $im ); }
php利用iframe实现无刷新文件上传功能的代码
抓取并下载CSS中所有图片文件的php代码
PHP无刷新上传文件实现代码
PHP通过正则表达式下载图片到本地的实现代码
利用Ffmpeg获得flv视频缩略图和视频时间的代码
PHP 图片上传代码
php图片上传存储源码并且可以预览
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
php 文件上传类代码
php 缩略图实现函数代码
PHP缩略图等比例无损压缩,可填充空白区域补充色
PHP用GD库生成高质量的缩略图片
兼容性最强的PHP生成缩略图的函数代码(修改版)
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
超级好用的一个php上传图片类(随机名,缩略图,加水印)
php imagecreatetruecolor 创建高清和透明图片代码小结
php getimagesize 上传图片的长度和宽度检测代码
php 图片加水印与上传图片加水印php类
简单PHP上传图片、删除图片实现代码
php 删除记录同时删除图片文件的实现代码
PHP 图片上传实现代码 带详细注释
PHP 文件上传全攻略
php下图片文字混合水印与缩略图实现代码
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
ie6 动态缩略图不显示的原因
php 方便水印和缩略图的图形类
php生成缩略图的类代码