//设置图片的存放目录 设置水印的存放地址如果愿意,可以给预览图、上传图片分设不同的存储地址

$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@qq.com 感谢支持!

喜欢 (0)or分享 (0)

php 文件预览 水印,PHP图片上传,预览图上传,水印设置相关推荐

  1. uniapp、uview——图片上传(单图上传、多图上传、多组照片上传、图片回显)

    一.简介 uView组件的上传功能,单图上传.多图上传等. 官方文档地址: https://www.uviewui.com/components/upload.html 二.步骤 (一)单图上传 1. ...

  2. 微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧!

    微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧! 图片上传是非常常见的功能,而多图上传在大多数应用中也是非常常见的,比如微信的朋友圈,微博的动态,都是有九宫格图片的,那这里肯定涉及了多 ...

  3. ajax 异步插入图片到数据库(多图上传)

    额 大概就这么个样子...截个图 点浏览  选择几张图片 选择完了 确定一下 然后插入数据库 同时在页面中显示插入的图片,代码 也没啥.看下 index.php <html><hea ...

  4. 数据集增广 之 多个图片贴到一张图上,以及生成相应的json文件

    多图合成一图: import os import tqdm import glob import json import math import random import numpy as np f ...

  5. 微信小程序之图片上传、多图上传、头像上传、头像获取、图片上传失败问题解决

    小程序用户授权获取用户头像,需点击才可以让用户选择是否授权. 图片上传失败问题解决 图片上传 一定要记得修改合法域名,不然会失败,而且找不到报错信息哟!并且域名采用 https 点击,用户授权,获取用 ...

  6. android预定义action打开图片,Android 使用预定义的action值启动系统应用

    1.启动浏览器 1 Intent intent = newIntent();2 intent.setAction(Intent.ACTION_WEB_SEARCH);3 //可以传一个搜索关键字,会直 ...

  7. 怎么将自己的头像p到特定的背景图_怎么使用PS抠图,把扣出来的图片P到另张图上...

    很多人都知道相片不好看,要用PS修改一下,可是PS具体叫什么可能有些人都叫不上来,它的全名叫 Photoshop . 至于Photoshop的用途也有很多.Photoshop主要处理以像素所构成的数字 ...

  8. 前端实现微信公众号图片上传预览jssdk

    最近做了公众号的项目,需要用jssdk,研究了一段时间也走了一些弯路,现在做一些记录 1.首先引入 <script src = "http://res.wx.qq.com/open/j ...

  9. 缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印

    缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等 import java.awt.AlphaComposite; import java.awt.Color; import java ...

  10. 新生研讨课:利用OpenCV处理带有水印的图片的调研报告

    电子科技大学 格拉斯哥学院 2017级 2017200602038 席文骥 目录 1.引言 2.技术背景 3.具体问题 4.实现方法 5.结语 6.参考 1.引言 在我们学院去年开设的新生研讨课上,曾 ...

最新文章

  1. SQL语言之事务处理语言(Oracle)
  2. SQLSERVER常用函数汇总
  3. 积分商城如何梳理思路和进行设计
  4. shop--7.店铺编辑和列表--店铺列表展示 前端
  5. (118)System Verilog 父类与子类对象复制(copy函数)详解
  6. 64.Linux/Unix 系统编程手册(下) -- 伪终端
  7. Blackrock的思考与启示
  8. Financial Modeling with Crystal Ball and Excel
  9. Go语言精进之路:你知道什么是Go语言编程思维吗?
  10. 各大视频网站下载神器
  11. qt在linux中安装目录,详解QT安装全过程
  12. H5端input标签通过手机软键盘进行搜索,并关闭软键盘
  13. 基于FSR柔性薄膜压力传感器的智能鞋改装垫
  14. python 合成gif与拆分gif为png图片
  15. 从南极到你家,易开得,一支“中国芯”的奇幻漂流
  16. thinkphp用phpqrcode生成二维码(含中间带logo、临时二维码)或生成微信二维码海报的方法
  17. linux内核原子操作的实现
  18. 重装win10系统后不能关机,最终解决方案
  19. 适合计算机课玩的联机游戏大全单机,单机太无聊?不妨来联机!这五款单机游戏联机后更好玩...
  20. JS对异步循环使用递归,分批进行大量异步请求

热门文章

  1. 一款公历转农历节气以及天干地支的js代码
  2. axios的get请求禁止缓存
  3. springboot+vue图片上传显示
  4. 常见的云服务器运营商及相关的优惠活动
  5. 帝国时代2决定版服务器证书身份验证失败,《帝国时代2决定版》常见问题解决方法介绍 常见问题怎么解决...
  6. powershell解压缩文件
  7. java控制台输出脚标上标下标,c – 如何在CLI上打印下标/上标?
  8. 【Python实用技巧】如何将Python脚本打包成exe可执行文件?
  9. 微生物组被Nature选为2020年最值得关注的技术之一
  10. 一个高逼格开发者必须理解的大型分布式网站的几点概念