<?php
//设置图片的存放目录 设置水印的存放地址如果愿意,可以给预览图、上传图片分设不同的存储地址
$img_path = $_SERVER[‘DOCUMENT_ROOT’].”/data/imgupload/”.date(Ym).”/”;
$water_path = $_SERVER[‘DOCUMENT_ROOT’].’/data/public_img/water.png’;
//mkdir只能创建最后的那层文件夹,所以别指望能直接创造一个几层深的新目录
if(!file_exists( $img_path)){
mkdir($img_path);
}
//设置可以上传的图片类型
$upType_valid = array(‘jpg’,’png’,’gif’,’bmp’,’jpeg’,’JPG’,’tif’,’tiff’);
if(isset($_POST) and $_SERVER[‘REQUEST_METHOD’]==’POST’){
//img_upload是input file的name,不是id
$fileName = $_FILES[‘img_upload’][‘name’];
$fileSize = $_FILES[‘img_upload’][‘size’];
}
if(strlen($fileName)){
list($txt,$ext) = explode(‘.’, $fileName);
}
if(!in_array( $ext, $upType_valid)){
echo(‘此类型不可上传’);
exit;
}
//设置图片名称,预览图片名称,上传的临时图片名称。
$final_img_name = time().’.’.$ext;
$final_pre_img_name = ‘pre’.time().’.’.$ext;
$tmp_name = $_FILES[‘img_upload’][‘tmp_name’];
$pre_maxWidth = 500;
$pre_maxHeight = 700;
$img_size = getimagesize($tmp_name);
$img_width = $img_size[0];
$img_height = $img_size[1];
//$WH_radio_true是实际的图片长宽比 W=width H=height radio是比率
$WH_radio_true = $img_height/ $img_width;
$WH_radio_advance = $pre_maxHeight/ $pre_maxWidth;
if($WH_radio_true < $WH_radio_advance && $img_width > $pre_maxWidth){
$pre_width = $pre_maxWidth;
$radio_height = $pre_maxWidth / $img_width;
$pre_height = $img_height * $radio_height;
} else
if($WH_radio_true > $WH_radio_advance && $img_height > $pre_height){
$pre_height = $pre_maxHeight;
$radio_width = $img_height / $pre_maxHeight;
$pre_width = $img_width * $radio_width;
} else{
$pre_width = $img_width;
$pre_height = $img_height;
}
//创建预览图,设置图的长宽备用
$preImg = imagecreatetruecolor($pre_width, $pre_height);
move_uploaded_file($tmp_name, $img_path.$final_img_name);
//用上传好的图片创建预览图的图形内容.因为不确定上传的图片类型,所以需要先做图片类型判断
//判断图片具体类型,好为后续的预览图生成功能做前置判断
$img_ext = getimagesize($img_path.$final_img_name);
switch($img_ext[2]){
case 1:
$pre_copyImg = imagecreatefromgif($img_path.$final_img_name);
break;
case 2:
$pre_copyImg = imagecreatefromjpeg($img_path.$final_img_name);
break;
case 3:
$pre_copyImg = imagecreatefrompng($img_path.$final_img_name);
break;
case 6:
$pre_copyImg = imagecreatefromwbmp($img_path.$final_img_name);
break;
case 7:
// $pre_copyImg = imagecreatefromtif($img_path.$final_img_name);
echo(‘暂不支持tif格式的预览图’);
break;
}
//制作初步的缩略图,此句完成对图片的缩小,后续在缩小以后的图片上添加水印
imagecopyresampled($preImg, $pre_copyImg,0,0,0,0, $pre_width, $pre_height, $img_width, $img_height);
$water_img = imagecreatefrompng($water_path);
$water_size = getimagesize($water_path);
$water_w = $water_size[0];
$water_h = $water_size[1];
//设置水印模式为右下:计算横坐标和纵坐标的偏移量,可以switch设置一个水印的位置标签,控制水印分处不同位置
$water_x = $pre_width – $water_w;
$water_y = $pre_height – $water_h;
//设置预览图的混色模式
imagealphablending($preImg,true);
//给预览图添加水印
imagecopy($preImg, $water_img, $water_x, $water_y,0,0, $water_w, $water_h);
//生成预览图并且存到相关目录中
imagejpeg($preImg,$img_path.$final_pre_img_name);
?>
打赏
微信扫一扫,打赏作者吧~
转载请注明:苏demo的别样人生 » PHP图片上传,预览图上传,水印设置
如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)