100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > php 文件预览 水印 PHP图片上传 预览图上传 水印设置

php 文件预览 水印 PHP图片上传 预览图上传 水印设置

时间:2024-01-17 10:52:33

相关推荐

php 文件预览 水印 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);

?>

打赏

微信扫一扫,打赏作者吧~

如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。

支付宝直接捐助帐号oracle_lee@ 感谢支持!

喜欢 (0)or分享 (0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。