搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小桥流水78
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
NB-IoT物联网开发技巧和应用:专栏总述_nb-iot开发实战
2
C++与Rust操作裸指针的比较
3
探索未来:ElectronBot——你的桌面级小机器人伙伴
4
【报错记录】Python文件读取时报错FileNotFoundError: [Errno 2] No such file or directory: ‘xxx‘_python filenotfounderror: [errno 2] no such file o
5
2024年最受欢迎的AI工具大汇总(建议收藏)_最好的ai软件2024
6
大数据带你挖掘打车的秘籍(2)
7
logback配置错误记录_logback appender filter
8
爆火的AI直播换脸应用Deep-Live-Cam整合包来了!6G显存可跑!
9
electron打包vue项目到debian操作系统踩坑_an unhandled rejection has occurred inside forge:
10
中国数据库前世今生:90年代的群雄争霸与技术革新
当前位置:
article
> 正文
PHP图片上传加水印(转)
作者:小桥流水78 | 2024-08-18 11:42:05
赞
踩
PHP图片上传加水印(转)
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<?
php
/*
*****************************************************************************
参数说明:
$max_file_size : 上传文件大小限制, 单位BYTE
$destination_folder : 上传文件路径
$watermark : 是否附加水印(1为加水印,其他为不加水印);
*****************************************************************************
*/
//
上传文件类型列表
$uptypes
=
array
(
'
image/jpg
'
,
'
image/jpeg
'
,
'
image/png
'
,
'
image/pjpeg
'
,
'
image/gif
'
,
'
image/bmp
'
,
'
image/x-png
'
);
$max_file_size
=
2000000
;
//
上传文件大小限制, 单位BYTE
$destination_folder
=
"
uploadimg/
"
;
//
上传文件路径
$watermark
=
1
;
//
是否附加水印(1为加水印,其他为不加水印);
$watertype
=
1
;
//
水印类型(1为文字,2为图片)
$waterposition
=
1
;
//
水印位置(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
$waterstring
=
"
http://www.xplore.cn/
"
;
//
水印字符串
$waterimg
=
"
xplore.gif
"
;
//
水印图片
$imgpreview
=
1
;
//
是否生成预览图(1为生成,其他为不生成);
$imgpreviewsize
=
1
/
2
;
//
缩略图比例
?>
<
html
>
<
head
>
<
title
>
ZwelL图片上传程序
</
title
>
<
style type
=
"
text/css
"
>
<!--
body
{
font
-
size
:
9pt;
}
input
{
background
-
color
:
#
66CCFF;
border
:
1px inset
#
CCCCCC;
}
-->
</
style
>
</
head
>
<
body
>
<
form enctype
=
"
multipart/form-data
"
method
=
"
post
"
name
=
"
upform
"
>
上传文件
:
<
input name
=
"
upfile
"
type
=
"
file
"
>
<
input type
=
"
submit
"
value
=
"
上传
"
><
br
>
允许上传的文件类型为
:<?=
implode
(
'
,
'
,
$uptypes
)
?>
</
form
>
<?
php
if
(
$_SERVER
[
'
REQUEST_METHOD
'
]
==
'
POST
'
)
{
if
(
!
is_uploaded_file
(
$_FILES
[
"
upfile
"
][tmp_name]))
//
是否存在文件
{
echo
"
图片不存在!
"
;
exit
;
}
$file
=
$_FILES
[
"
upfile
"
];
if
(
$max_file_size
<
$file
[
"
size
"
])
//
检查文件大小
{
echo
"
文件太大!
"
;
exit
;
}
if
(
!
in_array
(
$file
[
"
type
"
]
,
$uptypes
))
//
检查文件类型
{
echo
"
文件类型不符!
"
.
$file
[
"
type
"
];
exit
;
}
if
(
!
file_exists
(
$destination_folder
))
{
mkdir
(
$destination_folder
);
}
$filename
=
$file
[
"
tmp_name
"
];
$image_size
=
getimagesize
(
$filename
);
$pinfo
=
pathinfo
(
$file
[
"
name
"
]);
$ftype
=
$pinfo
[
'
extension
'
];
$destination
=
$destination_folder
.
time
()
.
"
.
"
.
$ftype
;
if
(
file_exists
(
$destination
)
&&
$overwrite
!=
true
)
{
echo
"
同名文件已经存在了
"
;
exit
;
}
if
(
!
move_uploaded_file
(
$filename
,
$destination
))
{
echo
"
移动文件出错
"
;
exit
;
}
$pinfo
=
pathinfo
(
$destination
);
$fname
=
$pinfo
[
basename
];
echo
"
< font color=red>已经成功上传</font><br>文件名: <font color= blue>
"
.
$destination_folder
.
$fname
.
"
</font><br>
"
;
echo
"
宽度:
"
.
$image_size
[
0
];
echo
"
长度:
"
.
$image_size
[
1
];
echo
"
<br> 大小:
"
.
$file
[
"
size
"
]
.
"
bytes
"
;
if
(
$watermark
==
1
)
{
$iinfo
=
getimagesize
(
$destination
,
$iinfo
);
$nimage
=
imagecreatetruecolor(
$image_size
[
0
]
,
$image_size
[
1
]);
$white
=
imagecolorallocate(
$nimage
,
255
,
255
,
255
);
$black
=
imagecolorallocate(
$nimage
,
0
,
0
,
0
);
$red
=
imagecolorallocate(
$nimage
,
255
,
0
,
0
);
imagefill(
$nimage
,
0
,
0
,
$white
);
switch
(
$iinfo
[
2
])
{
case
1
:
$simage
=
imagecreatefromgif(
$destination
);
break
;
case
2
:
$simage
=
imagecreatefromjpeg(
$destination
);
break
;
case
3
:
$simage
=
imagecreatefrompng(
$destination
);
break
;
case
6
:
$simage
=
imagecreatefromwbmp(
$destination
);
break
;
default
:
die
(
"
不支持的文件类型
"
);
exit
;
}
imagecopy(
$nimage
,
$simage
,
0
,
0
,
0
,
0
,
$image_size
[
0
]
,
$image_size
[
1
]);
imagefilledrectangle(
$nimage
,
1
,
$image_size
[
1
]
-
15
,
80
,
$image_size
[
1
]
,
$white
);
switch
(
$watertype
)
{
case
1
:
//
加水印字符串
imagestring(
$nimage
,
2
,
3
,
$image_size
[
1
]
-
15
,
$waterstring
,
$black
);
break
;
case
2
:
//
加水印图片
$simage1
=
imagecreatefromgif(
"
xplore.gif
"
);
imagecopy(
$nimage
,
$simage1
,
0
,
0
,
0
,
0
,
85
,
15
);
imagedestroy(
$simage1
);
break
;
}
switch
(
$iinfo
[
2
])
{
case
1
:
//
imagegif($nimage, $destination);
imagejpeg(
$nimage
,
$destination
);
break
;
case
2
:
imagejpeg(
$nimage
,
$destination
);
break
;
case
3
:
imagepng(
$nimage
,
$destination
);
break
;
case
6
:
imagewbmp(
$nimage
,
$destination
);
//
imagejpeg($nimage, $destination);
break
;
}
//
覆盖原上传文件
imagedestroy(
$nimage
);
imagedestroy(
$simage
);
}
if
(
$imgpreview
==
1
)
{
echo
"
<br>图片预览:<br>
"
;
echo
"
<img src="
"
.
$destination
.
"
" width=
"
.
(
$image_size
[
0
]
*
$imgpreviewsize
)
.
"
height=
"
.
(
$image_size
[
1
]
*
$imgpreviewsize
);
echo
"
alt="图片预览: 文件名:
"
.
$destination
.
"
上传时间:">
"
;
}
}
?>
</
body
>
</
html
>
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小桥流水78/article/detail/997326
推荐阅读
article
“粘土风格”轻松拿捏,基于
函数
计算
部署
ComfyUI
实现
AI
生图_
comfyui
函数
计算
...
使用阿里云
函数
计算
FC,快速
部署
AI
绘画工具
ComfyUI
,体验高质量图像生成。_
comfyui
函数
计算
comfyui
...
赞
踩
article
SpringBoot
集成
RabbitMq
消费者手动确认
消息
,失败重试后发送至
死信
队列
_rabb...
【代码】
SpringBoot
集成
RabbitMq
消费者手动确认
消息
,失败重试后发送至
死信
队列
。_
rabbitmq
...
赞
踩
article
小伙
100
倍
追加
投注
大乐透
中
30
万 险
中
亿元巨奖!...
体彩
大乐透
第19024期开奖,云浮市4421021099体彩网点传出喜讯,一位幸运购彩者
中
得
100
注四等奖,共揽获奖金...
赞
踩
article
PHP
图片
上传...
$file = $_FILES;if(!empty($file['photo'])){ if(is_uploaded_f...
赞
踩
article
EasyRecovery16
破解版电脑
文件
恢复
软件...
EasyRecovery超级硬盘数据
恢复
软件采用最新的数据扫描引擎,从磁盘底层读出原始的扇区数据,经过高级的数据分析算法...
赞
踩
article
vue
3
商品列表
组件
封装
_使用
vue
封装
单个商品...
文章介绍了如何在Vue.js应用中通过
封装
组件
来实现数据对象的传递,通过将商品列表的数据作为props参数,
组件
可以根据...
赞
踩
article
YOLOv8
Ultralytics
:使用
Ultralytics
框架进行
FastSAM
图像分割_yo...
本文介绍了如何使用
Ultralytics
框架的
FastSAM
进行实时图像分割,
FastSAM
是
YOLOv8
系列的扩展,专...
赞
踩
article
Python
_
Web
开发 期末复习_
pythonweb
期末考试
...
元素创建表单表单组成:Form标签属性、表单元素..._
pythonweb
期末考试
pythonweb
期末考试
...
赞
踩
article
vue3
setup
语法糖
实现
一个拖拽
排序
列表_
vue3
list
switch
排序
...
相信不少小伙伴已经开始使用
vue3
在项目中实战了,可能会遇到
实现
一个拖拽
排序
列表的组件。如何
实现
一个好看的拖拽列表呢。以...
赞
踩
article
vue2
前端
阿里
云
oss
服务端
签名直传...
generatePresignedUrlApi是由后端提供的接口 来获取密钥。
vue2
前端
阿里
云
oss
服务端
签名直传 ...
赞
踩
article
新人测开的
入门
总结_
测试
开发
经验
...
一转眼已经工作了快半年时间,在组内各位大佬的指导帮助下,从零开始
入门
,学习到了非常多
测试
开发
需要的相关知识,对这个岗位也...
赞
踩
article
《
算法
竞赛
入门
经典
-
第二
版》第三章
习题
答案
_
算法
竞赛
入门
经典
第二
版
答案
pdf...
《
算法
竞赛
入门
经典
-
第二
版》课后
习题
答案
--第三章_
算法
竞赛
入门
经典
第二
版
答案
pdf
算法
竞赛
入门
经典
第二
版
答案
pdf ...
赞
踩
article
springboot
集成
rabbitMQ
_
failed
to add
match
'
rabbitmq
...
这篇博客介绍了如何在SpringBoot项目中集成RabbitMQ,包括RabbitMQ的安装、POM配置、消息发送与接...
赞
踩
article
curl
:
(7) Failed
to
connect
to
raw.githubuserconte...
安装Homebrew出现错误_获取授权失败
:
curl
:
(7)
couldn
't
connect
to
server
获...
赞
踩
article
VPX
国产化
千兆
交换板_
vpx
板卡...
WAV16T是一款基于盛科CTC5160和龙芯2K1000处理器的3U三层
千兆
VPX
交换板,提供16个
千兆
电接口。该产品...
赞
踩
article
57-
VPX
电路设计
_
vpx
连接器
...
VPX
接口
电路设计
_
vpx
连接器
vpx
连接器
视频链接
VPX
连接器
电路设计
01_哔哩哔...
赞
踩
article
python
小
游戏
毕设 仿谷歌浏览器
小
恐龙
小
游戏
设计与
实现
(源码)_
python
谷歌
小
恐龙
...
python
谷歌
小
恐龙
文章目录 0 项目简介1 游...
赞
踩
article
Python
小游戏
(
404
小
恐龙
)...
玩法:上下控制起跳躲避源码分享: import cfgimport sysimport randomimport pyg...
赞
踩
article
社交网络应用从零开始第四天——安装Node.js和
Angular
CLI_
error
:
this
c...
安装Node.js和
Angular
CLI_
error
:
this
command
is not
available
w...
赞
踩
article
项目
复盘
成功
的
12条秘诀...
学习
的
三种方法:从书本中学习,向身边
的
人学习,向自己学习。其中向自己学习最靠谱。如何向自己学习呢?向自己学习最有效
的
方法...
赞
踩
相关标签
Serverless
spring boot
java-rabbitmq
rabbitmq
鳄鱼彩票2cp
php
mysql
内存数据库
数据分析
其他
数据库
vue3
前端
组件封装
YOLO
人工智能
目标检测
pytorch
图像分割
javascript
css
阿里云
云计算
自动化测试
测试工具