• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码_php技巧

php 搞代码 3年前 (2022-01-26) 43次浏览 已收录 0个评论
<?php <BR>//上传文件类型列表 <BR>$uptypes=array( <BR>'image/jpg', <BR>'image/jpeg', <BR>'image/png', <BR>'image/pjpeg', <BR>'image/gif', <BR>'image/bmp', <BR>'image/x-png' <BR>); <BR>$max_file_size = 200000; //上传文件大小限制, 单位BYTE <BR>$path_im = "prod_img/"; //生成大图保存文件夹路径 <BR>$path_sim = "prod_simg/"; //缩略图保存文件夹路径 <BR>$watermark = 1; //是否加水印(1为加水印,其他为不加水印); <BR>$watertype = 1; //水印类型(1为文字,2为图片) <BR>$waterstring = "[url=http://www.jy17.com/]http://www.jy17.com/[/url]"; //水印字符串 <BR>$waterimg = "water.png"; //水印图片文件路径 <BR>$waterclearly = 100; //水印透明度0-100,数字小透明高 <BR>$imclearly = 100; //图片清晰度0-100,数字越大越清晰,文件尺寸越大 <BR>$simclearly = 75; //缩略图清晰度0-100,数字越大越清晰,文件尺寸越大 <BR>$smallmark = 1; //是否生成缩略图(1为加生成,其他为不); <BR>$dst_sw = 80; //定义缩略图宽度,高度我采用等比例缩放,所以只要比较宽度就可以了 <BR>?> <BR> <BR>上传文件: <BR> <BR><br> <BR>允许上传的文件类型为:<?=implode(',',$uptypes)?> <BR> <BR><?php <BR>if ($_SERVER['REQUEST_METHOD'] == 'POST') <BR>{ <BR>if (!is_uploaded_file($_FILES["upfile"][tmp_name])) <BR>//是否存在文件 <BR>{ <BR>echo "图片不存在!"; <BR>exit; <BR>} <BR>$file = $_FILES["upfile"]; <BR>if($max_file_size < $file["size"]) <BR>//检查文件大小 <BR>{ $max_file_size = $max_file_size/1000; <BR>echo "文件太大,超过 ".$max_file_size." KB!"; <BR>exit; <BR>} <BR>if(!in_array($file["type"],$uptypes)) <BR>//检查文件类型 <BR>{ <BR>echo "文件类型不符!".$file["type"]; <BR>exit; <BR>} <BR>if(!file_exists($path_im)) <BR>//检查上传目录是否存在,不存在创建 <BR>{ <BR>mkdir($path_im); <BR>} <BR>if(!file_exists($path_sim)) <BR>//检查缩略图目录是否存在,不存在创建 <BR>{ <BR>mkdir($path_sim); <BR>} <BR>$filename = $file["tmp_name"]; <BR>$im_size = getimagesize($filename); <BR>$src_w = $im_size[0]; <BR>$src_h = $im_size[1]; <BR>$src_type = $im_size[2]; <BR>$pinfo = pathinfo($file["name"]); <BR>$filetype = $pinfo['extension']; <BR>$all_path = $path_im.time().".".$filetype; //路径+文件名,目前以上传时间命名 <BR>if (file_exists($all_path)) <BR>{ <BR>echo "同名文件已经存在了"; <BR>exit; <BR>} <BR>if(!move_uploaded_file ($filename,$all_path)) <BR>{ <BR>echo "移动文件出错"; <BR>exit<span>%本文来源gaodai#ma#com搞*代#码9网#</span><strong>搞gaodaima代码</strong>; <BR>} <BR>$pinfo = pathinfo($all_path); <BR>$fname = $pinfo[basename]; <BR>echo "<font color="red">已经成功上传</font><br>文件名: <font color="blue">".$all_path."</font><br>"; <BR>echo "宽度:".$src_w."px "; <BR>echo "长度:".$src_h."px "; <BR>echo "<br> 大小:".$file["size"]." bytes"; <BR>switch($src_type)//判断源图片文件类型 <BR>{ <BR>case 1://gif <BR>$src_im = imagecreatefromgif($all_path);//从源图片文件取得图像 <BR>break; <BR>case 2://jpg <BR>$src_im = imagecreatefromjpeg($all_path); <BR>break; <BR>case 3://png <BR>$src_im = imagecreatefrompng($all_path); <BR>break; <BR>//case 6: <BR>//$src_im=imagecreatefromwbmp($all_path); <BR>//break; <BR>default: <BR>die("不支持的文件类型"); <BR>exit; <BR>} <BR>if($watermark == 1) <BR>{ <BR>//$iinfo = getimagesize($all_path,$iinfo); <BR>$dst_im = imagecreatetruecolor($src_w,$src_h); <BR>//根据原图尺寸创建一个相同大小的真彩色位图 <BR>$white = imagecolorallocate($dst_im,255,255,255);//白 <BR>//给新图填充背景色 <BR>$black = imagecolorallocate($dst_im,0,0,0);//黑 <BR>$red = imagecolorallocate($dst_im,255,0,0);//红 <BR>$orange = imagecolorallocate($dst_im,255,85,0);//橙 <BR>imagefill($dst_im,0,0,$white); <BR>imagecopymerge($dst_im,$src_im,0,0,0,0,$src_w,$src_h,100);//原图图像写入新建真彩位图中 <BR>//imagefilledrectangle($dst_im,1,$src_h-15,80,$src_h,$white); <BR>switch($watertype) <BR>{ <BR>case 1: //加水印字符串 <BR>imagestring($dst_im,5,5,$src_h-20,$waterstring,$orange);//文字水印,字体5号颜色橙色,位于背景图左下角 <BR>break; <BR>case 2: //加水印图片 <BR>$lim_size = getimagesize($waterimg); //取得水印图像尺寸,信息 <BR>switch($lim_size[2]) //判断水印图片文件类型 <BR>{ <BR>case 1://gif <BR>$src_lim = imagecreatefromgif($waterimg); //取得水印图像 <BR>break; <BR>case 2://jpg <BR>$src_lim = imagecreatefromjpeg($waterimg); <BR>break; <BR>case 3://png <BR>$src_lim = imagecreatefrompng($waterimg); <BR>break; <BR>//case 6: <BR>//$src_im=imagecreatefromwbmp($waterimg); <BR>//break; <BR>default: <BR>die("不支持的文件类型"); <BR>exit; <BR>} <BR>$src_lw = ($src_w-$lim_size[0])/2; //水印位于背景图正中央width定位 <BR>$src_lh = ($src_h-$lim_size[1])/2; //height定位 <BR>imagecopymerge($dst_im,$src_lim,$src_lw,$src_lh,0,0,$lim_size[0],$lim_size[1],$waterclearly);// 合并两个图像,设置水印透明度$waterclearly <BR>imagedestroy($src_lim); <BR>break; <BR>} <BR>switch($src_type) <BR>{ <BR>case 1: <BR>imagegif($dst_im,$all_path,$imclearly);//生成gif文件,图片清晰度0-100 <BR>break; <BR>case 2: <BR>imagejpeg($dst_im,$all_path,$imclearly);//生成jpg文件,图片清晰度0-100 <BR>break; <BR>case 3: <BR>imagepng($dst_im,$all_path,$imclearly);//生成png文件,图片清晰度0-100 <BR>break; <BR>//case 6: <BR>//imagewbmp($dst_im,$all_path); <BR>break; <BR>} <BR>//释放缓存 <BR>imagedestroy($dst_im); <BR>} <BR>if($smallmark == 1) <BR>{ <BR>$sall_path = $path_sim.time().".".$filetype; <BR>if (file_exists($sall_path)) <BR>{ <BR>echo "同名文件已经存在了"; <BR>exit; <BR>} <BR>if($src_w <= $dst_sw) // 原图尺寸 <= 缩略图尺寸 <BR>{ <BR>$dst_sim = imagecreatetruecolor($src_w,$src_h); //新建缩略图真彩位图 <BR>imagecopymerge($dst_sim,$src_im,0,0,0,0,$src_w,$src_h,100); //原图图像写入新建真彩位图中 <BR>} <BR>if($src_w > $dst_sw) // 原图尺寸 > 缩略图尺寸 <BR>{ <BR>$dst_sh = $dst_sw/$src_w*$src_h; <BR>$dst_sim = imagecreatetruecolor($dst_sw,$dst_sh); //新建缩略图真彩位图(等比例缩小原图尺寸) <BR>imagecopyresampled($dst_sim,$src_im,0,0,0,0,$dst_sw,$dst_sh,$src_w,$src_h); //原图图像写入新建真彩位图中 <BR>} <BR>switch($src_type) <BR>{ <BR>case 1: <BR>imagegif($dst_sim,$sall_path,$simclearly);//生成gif文件,图片清晰度0-100 <BR>break; <BR>case 2: <BR>imagejpeg($dst_sim,$sall_path,$simclearly);//生成jpg文件,图片清晰度0-100 <BR>break; <BR>case 3: <BR>imagepng($dst_sim,$sall_path,$simclearly);//生成png文件,图片清晰度0-100 <BR>break; <BR>//case 6: <BR>//imagewbmp($dst_sim,$sall_path); <BR>break; <BR>} <BR>//释放缓存 <BR>imagedestroy($dst_sim); <BR>} <BR>//释放缓存 <BR>imagedestroy($src_im); <BR>} <BR>?><BR>


php等比例生成缩略图函数2

 <BR>function reSizeImg($imgSrc, $resize_width, $resize_height, $isCut=false) { <BR>//图片的类型 <BR>$type = substr ( strrchr ( $imgSrc, "." ), 1 ); <BR>//初始化图象 <BR>if ($type == "jpg") { <BR>$im = imagecreatefromjpeg ( $imgSrc ); <BR>} <BR>if ($type == "gif") { <BR>$im = imagecreatefromgif ( $imgSrc ); <BR>} <BR>if ($type == "png") { <BR>$im = imagecreatefrompng ( $imgSrc ); <BR>} <BR>//目标图象地址 <BR>$full_length = strlen ( $imgSrc ); <BR>$type_length = strlen ( $type ); <BR>$name_length = $full_length - $type_length; <BR>$name = substr ( $imgSrc, 0, $name_length - 1 ); <BR>$dstimg = $name . "_s." . $type; <BR>$width = imagesx ( $im ); <BR>$height = imagesy ( $im ); <BR>//生成图象 <BR>//改变后的图象的比例 <BR>$resize_ratio = ($resize_width) / ($resize_height); <BR>//实际图象的比例 <BR>$ratio = ($width) / ($height); <BR>if (($isCut) == 1) //裁图 <BR>{ <BR>if ($ratio >= $resize_ratio) //高度优先 <BR>{ <BR>$newimg = imagecreatetruecolor ( $resize_width, $resize_height ); <BR>imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, (($height) * $resize_ratio), $height ); <BR>ImageJpeg ( $newimg, $dstimg ); <BR>} <BR>if ($ratio < $resize_ratio) //宽度优先 <BR>{ <BR>$newimg = imagecreatetruecolor ( $resize_width, $resize_height ); <BR>imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, $width, (($width) / $resize_ratio) ); <BR>ImageJpeg ( $newimg, $dstimg ); <BR>} <BR>} else //不裁图 <BR>{ <BR>if ($ratio >= $resize_ratio) { <BR>$newimg = imagecreatetruecolor ( $resize_width, ($resize_width) / $ratio ); <BR>imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, $resize_width, ($resize_width) / $ratio, $width, $height ); <BR>ImageJpeg ( $newimg, $dstimg ); <BR>} <BR>if ($ratio < $resize_ratio) { <BR>$newimg = imagecreatetruecolor ( ($resize_height) * $ratio, $resize_height ); <BR>imagecopyresampled ( $newimg, $im, 0, 0, 0, 0, ($resize_height) * $ratio, $resize_height, $width, $height ); <BR>ImageJpeg ( $newimg, $dstimg ); <BR>} <BR>} <BR>ImageDestroy ( $im ); <BR>} <BR>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码_php技巧
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址