效果图如下:

index.html代码如下:

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>上传图片加水印</title>
</head>
<body><!-- action为空表示提交到当前页面  enctype编码格式 --><form action="" method="post" enctype="multipart/form-data"><!-- 上传文件的名称为img --><input type="file" name="img" value="image/*"><button type="submit" name="button">上传图片加水印</button></form>
</body>
</html>

index.php代码如下:

<?php//获取图片信息函数
function get_image_contents($file){$data['img'] = file_get_contents($file);if( !$data['img'] ){return false;};$data['size'] = getimagesize($file);return $data;
};//生成水印并上传图片函数
function upload_watermark_image($file,$output_dir = './output_img/',$alpha = 20,$logo_dir= './watermark/logo.png'
){$file_type = explode('/',$file['type']);//判断文件类型 正则匹配if(!preg_match('/^image/',$file_type[0])){return false;};//获取水印logo图片信息$logo_info = get_image_contents($logo_dir);//是否获取失败if( !$logo_info )return false;//获取水印logo图片宽高list($logo_width,$logo_height) = $logo_info['size'];//打开上传的图像信息$up_img_info = get_image_contents($file['tmp_name']);//是否获取失败if(!$up_img_info )return false;//获取水印logo图片宽高list($img_width,$img_height) = $up_img_info['size'];//imagecreatefromstring — 从字符串中的图像流新建一图像  生成水印 与 生成上传图片$logo = imagecreatefromstring($logo_info['img']);$img = imagecreatefromstring($up_img_info['img']);//生成的水印在右下角(10,10)位置$dis_x = $img_width - $logo_width - 10;$dis_y = $img_height - $logo_height - 10;//imagecopymerge(上传图片,水印,位置,水印宽,水印高,透明度0~100) — 拷贝并合并图像的一部分imagecopymerge($img,$logo,$dis_x,$dis_y,0,0,$logo_width,$logo_height,$alpha);//上传图片的种类$img_types = ['jpeg','png','gif','webp'];//获取图片后缀 是否在种类内 不是默认上传png格式图片$img_type = (in_array($file_type[1],$img_types)) ? $file_type[1] : 'png';//设置上传不同图片的函数名调用 .号是字符串连接符$save_img_name = 'image'.$img_type;//保存图片路径名称$img_path = $output_dir.uniqid().'.'.$img_type;//该目录是否存在  || 不存在创建该目录is_dir($output_dir) || mkdir($output_dir);//上传生成好的有水印图片 如:imagepng(上传的图片,上传的路径)$save_img_name($img,$img_path);//用完后 销毁与内存关联的图像资源imagedestroy($img);imagedestroy($logo);//输出上传的图片地址return $img_path;
}//empty():检查一个变量是否为空  /  $_FILES数组:接收上传的文件
if(empty($_FILES)){ //提交的文件是否为空//没有文件则显示提交页面include 'index.html';
}else{$name = 'img';//获取上传的图片信息$file = $_FILES[$name];$output_img = upload_watermark_image($file);if($output_img){echo "<img src='".$output_img." ' /> <br>";}else{echo "这不是图片文件";}//原图//imagecreatefromstring — 从字符串中的图像流新建一图像 //file_get_contents — 将整个文件读入一个字符串 ($file['tmp_name']是图片地址)$dst_image = imagecreatefromstring(file_get_contents($file['tmp_name']));//获取图片宽高list($file_width,$file_height) = getimagesize($file['tmp_name']);};

php上传图片并添加水印相关推荐

  1. uni-app上传图片并添加水印

    uni-app上传图片并添加水印: 效果: image-picker 组件使用: <template><view><ImagePicker v-model="i ...

  2. 齐博php百度编辑器上传图片_php版百度编辑器ueditor怎样给上传图片自动添加水印?...

    百度ueditor是广泛使用的所见即所得图文排版编辑插件,功能比较完善,美中不足就是不支持自动加水印.万维景盛工程师搜集到php版ueditor自动加水印的教程,希望对大家有帮助. 1.打开uedit ...

  3. java 上传图片 / 文件添加水印(png/jpg/pdf)

    png/jpg/pdf文件上传时添加水印 最近在公司遇到了一个还算是比较复杂的业务吧,因为这个业务是给png格式;jpg格式;还有pdf格式的文件添加水印,其实图片格式的文件用java做水印还是比较好 ...

  4. 前端上传图片添加水印

    在最近 haoyo择校 功能中,需要上传各个高校的招生计划图片:为申明版权,故需要在上传图片时添加水印. 技术栈: vue2.x+element-ui+more... 实现思路: 利用 element ...

  5. php 上传图片 添加水印,上传图片添加水印?该怎么解决

    上传图片添加水印??? 上传图片添加水印??? 搞了个上传图片的函数(经过测试可以上传图片,这个没有问题) 现在想上传图片时添加水印图片(一个小gif) 上传图片时,网页提示函数imagecopyme ...

  6. java实现给MultipartFile添加水印

    接到一个新需求,上传图片后添加水印 先测试本地图片加水印 import javax.imageio.ImageIO; import java.awt.*; import java.awt.image. ...

  7. 怎么在线快速添加水印防止盗图?

    平时在网站上下载的图片我们会发现很多都是添加水印的,这个主要是保护自己的版权不受侵犯,不然自己辛辛苦苦设计出来的图片容易被别人白嫖去了.可是怎么添加水印防止自己的作品被盗呢?现在,小编就给大家介绍一下 ...

  8. PHP 图像编辑GD库的使用以及图像的压缩

    1.php在使用GD库的时候应打开对应的GD库扩展,如下图 2.GD库的开头小案例 imagecreatetruecolor(width, height) 创建一个幕布 imagecoloralloc ...

  9. .Net 面试题整理(一)

    .Net 面试题整理(一) 好久的资料了,拿出来分享给大家,主要是记录一些面试题整理. Main函数是什么?在程序中使用Main函数有什么需要注意的地方? Q:程序的入口函数!函数名字不能改变:一个程 ...

最新文章

  1. 第五期直播《聊聊目标检测和秋招那些事》精彩回顾
  2. C#使用TCP/IP与ModBus进行通讯
  3. python 生成xml文件
  4. linux下tmp目录属性,Linux:文件夹属性及umask
  5. java修改原有txt文件_(转)Java创建txt文件并进行读、写、修改操作
  6. 博客系统。集成调试平台,支持类结构/jar结构预览、支持方法调试和监听、支持修改类字段(变量、常量、枚举)等
  7. 如何把博客园的博客弄出狂拽酷炫的效果
  8. freetype 2.11.0必须使用VS2012编译
  9. ios打包时候提示三方文件库错误,整理下解决的思路
  10. python操作QQ
  11. JAVA 对 海康SDK二次开发
  12. Hibernate必须掌握的知识
  13. 解决Excel桌面新建.xls或.xlsx文件,提示“文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配“的问题
  14. python-pygame怀旧游戏之超级玛丽
  15. 英特尔显卡笔记本屏幕自动调光功能导致屏幕闪烁----笔记本显示器闪烁
  16. 目前梦幻山东区人最多的服务器,梦幻西游十大火区盘点:有好朋友的区就是最火的区...
  17. 注意力机制、bmm运算
  18. python动作识别代码_基于openpose的动作识别(二)
  19. 机器学习08:最近邻学习
  20. WebRTC视频JitterBuffer详解

热门文章

  1. 客户服务专员认证考试
  2. 【智能合约系列003-以太坊安全之 Parity 第一次安全事件漏洞分析】
  3. 2 位谷歌顶级程序员的激荡人生,曾共用 1 台电脑写代码
  4. Discovery Studio简介
  5. 2262 c语言软件解码,单片机解码315M的pt2262编码的c51程序
  6. lotus notes java_远程数据库的Lotus Notes Java复制
  7. linux创建删除文件命令行,彻底消失,Linux下用命令行彻底删除文件
  8. Swift Invalid bitcode version (Producer: '802.0.41.0_0' Reader: '800.0.42.1_0')
  9. Java入门学习宝典大全
  10. Revit获取族预览图