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@qq.com 感谢支持!
喜欢 (0)or分享 (0)
php 文件预览 水印,PHP图片上传,预览图上传,水印设置相关推荐
- uniapp、uview——图片上传(单图上传、多图上传、多组照片上传、图片回显)
一.简介 uView组件的上传功能,单图上传.多图上传等. 官方文档地址: https://www.uviewui.com/components/upload.html 二.步骤 (一)单图上传 1. ...
- 微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧!
微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧! 图片上传是非常常见的功能,而多图上传在大多数应用中也是非常常见的,比如微信的朋友圈,微博的动态,都是有九宫格图片的,那这里肯定涉及了多 ...
- ajax 异步插入图片到数据库(多图上传)
额 大概就这么个样子...截个图 点浏览 选择几张图片 选择完了 确定一下 然后插入数据库 同时在页面中显示插入的图片,代码 也没啥.看下 index.php <html><hea ...
- 数据集增广 之 多个图片贴到一张图上,以及生成相应的json文件
多图合成一图: import os import tqdm import glob import json import math import random import numpy as np f ...
- 微信小程序之图片上传、多图上传、头像上传、头像获取、图片上传失败问题解决
小程序用户授权获取用户头像,需点击才可以让用户选择是否授权. 图片上传失败问题解决 图片上传 一定要记得修改合法域名,不然会失败,而且找不到报错信息哟!并且域名采用 https 点击,用户授权,获取用 ...
- android预定义action打开图片,Android 使用预定义的action值启动系统应用
1.启动浏览器 1 Intent intent = newIntent();2 intent.setAction(Intent.ACTION_WEB_SEARCH);3 //可以传一个搜索关键字,会直 ...
- 怎么将自己的头像p到特定的背景图_怎么使用PS抠图,把扣出来的图片P到另张图上...
很多人都知道相片不好看,要用PS修改一下,可是PS具体叫什么可能有些人都叫不上来,它的全名叫 Photoshop . 至于Photoshop的用途也有很多.Photoshop主要处理以像素所构成的数字 ...
- 前端实现微信公众号图片上传预览jssdk
最近做了公众号的项目,需要用jssdk,研究了一段时间也走了一些弯路,现在做一些记录 1.首先引入 <script src = "http://res.wx.qq.com/open/j ...
- 缩放图像、切割图像、图像类型转换、彩色转黑白、文字水印、图片水印
缩放图像.切割图像.图像类型转换.彩色转黑白.文字水印.图片水印等 import java.awt.AlphaComposite; import java.awt.Color; import java ...
- 新生研讨课:利用OpenCV处理带有水印的图片的调研报告
电子科技大学 格拉斯哥学院 2017级 2017200602038 席文骥 目录 1.引言 2.技术背景 3.具体问题 4.实现方法 5.结语 6.参考 1.引言 在我们学院去年开设的新生研讨课上,曾 ...
最新文章
- SQL语言之事务处理语言(Oracle)
- SQLSERVER常用函数汇总
- 积分商城如何梳理思路和进行设计
- shop--7.店铺编辑和列表--店铺列表展示 前端
- (118)System Verilog 父类与子类对象复制(copy函数)详解
- 64.Linux/Unix 系统编程手册(下) -- 伪终端
- Blackrock的思考与启示
- Financial Modeling with Crystal Ball and Excel
- Go语言精进之路:你知道什么是Go语言编程思维吗?
- 各大视频网站下载神器
- qt在linux中安装目录,详解QT安装全过程
- H5端input标签通过手机软键盘进行搜索,并关闭软键盘
- 基于FSR柔性薄膜压力传感器的智能鞋改装垫
- python 合成gif与拆分gif为png图片
- 从南极到你家,易开得,一支“中国芯”的奇幻漂流
- thinkphp用phpqrcode生成二维码(含中间带logo、临时二维码)或生成微信二维码海报的方法
- linux内核原子操作的实现
- 重装win10系统后不能关机,最终解决方案
- 适合计算机课玩的联机游戏大全单机,单机太无聊?不妨来联机!这五款单机游戏联机后更好玩...
- JS对异步循环使用递归,分批进行大量异步请求
热门文章
- 一款公历转农历节气以及天干地支的js代码
- axios的get请求禁止缓存
- springboot+vue图片上传显示
- 常见的云服务器运营商及相关的优惠活动
- 帝国时代2决定版服务器证书身份验证失败,《帝国时代2决定版》常见问题解决方法介绍 常见问题怎么解决...
- powershell解压缩文件
- java控制台输出脚标上标下标,c – 如何在CLI上打印下标/上标?
- 【Python实用技巧】如何将Python脚本打包成exe可执行文件?
- 微生物组被Nature选为2020年最值得关注的技术之一
- 一个高逼格开发者必须理解的大型分布式网站的几点概念