搜索
查看
编辑修改
首页
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
华为OD-D卷数的分解
2
RabbitMQ如何防止消息丢失及重复消费_rabbitmq如何保证消息不被重复消费
3
Android基础教程(非常详细)从零基础入门到精通,看完这一篇就够了_android开发菜鸟教程
4
在线教程|低门槛部署!SUPIR 专治各种图片模糊,还能理解文本描述进行精修_supir高清修复sd部署
5
社区供稿丨GPT-4o 对实时互动与 RTC 的影响
6
使用Matlab、Opencv、Ros三种方法完成相机标定
7
如何处理“冲突” ——面试常见问题解析_面试如果和其他人有冲突
8
最简单案例,讲如何用数据驱动产品优化
9
如何使用BERT实现中文的文本分类(附代码)_bert模型中文分类
10
ElasticSearch 集群管理_elasticsearch 管理工具
当前位置:
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
开源
同态
加密
库
HEhub
发布|首个由国内
隐私
计算
团队研发的(全)
同态
加密
算法库_全
同态
加密
库...
在这其中,密码学技术是
隐私
计算
领域一个重要的方向,一些高级的密码学技术如安全多方
计算
(secure multi-par...
赞
踩
article
vue3
列表
渲染
...
我们可以使用 v-for 指令基于一个数组来
渲染
一个列表。v-for 指令的值需要使用 item in items 形式...
赞
踩
article
LLM
大
模型
的
演进与
发展
_
llm
进化路线与现状...
本文主要是对
LLM
的
想法进行一次全面
的
梳理和整合。我希望这次
的
技术沉淀不仅是我个人
的
梳理和沉淀,也能为刚踏入AI领域
的
新...
赞
踩
article
使用
kaldi
的
sherpa
-
onnx
根据
文字
语音
合成(中文)...
【代码】
使用
kaldi
的
sherpa
-
onnx
根据
文字
语音
合成(中文)_
使用
kaldi
的
sherpa
-
onnx
根据
文字语...
赞
踩
article
同态
加密
和
SEAL
库的介绍(四)
CKKS
方案_
seal
ckks
同态
加密
算法...
本篇介绍了
SEAL
库的
CKKS
方案(及其编码器
CKKS
Encoder),该方案解决了 BFV 中数据类型溢出问题...
赞
踩
article
Verilog
开源
项目
——百兆
以太网交换机
(一)
架构设计
与
Feature
定义_
以太网交换机
结构...
经过第一代的交换机
项目
后,博主也算对交换机有了更深的认识,但是第一代的
Feature
过于单一,架构简单,和市场化的交换机...
赞
踩
article
Packer
-
Fuzzer
一款好用的
前端
高效安全
扫描
工具
_
packerfuzzer
...
Packer
Fuzzer
是一款针对Webpack等
前端
打包
工具
所构造的网站进行快速、高效安全检测的
扫描
工具
。_pack...
赞
踩
article
BDA
,
CDA
,
CPDA
哪个证相对可靠?哪个
含金量
高?具体
考试内容
?_cda和bda
数据
分析师
哪个含...
作者:df.describe链接:https://www.zhihu.com/question/52313434/ans...
赞
踩
article
WCF
Web
API...
WCF
Web
API
WCF
Web
API 是 “First-class programming model for...
赞
踩
article
【
LLM
大
模型
】
LangChain
--如何使用
大
模型
_
langchain
调用
llm
大
模型
...
LangChain
是一个用于构建和管理语言
模型
链的开源框架,旨在帮助开发者更高效地构建和部署复杂的自然语言处理(NLP)...
赞
踩
article
信息
系统
分析与设计-
信息
、管理与
信息
系统
_计算机
信息
系统
的硬件
体系结构
有两类
分布式
和 集中式...
信息
系统
分析与设计-
信息
、管理与
信息
系统
1.
信息
与
信息
系统
1.1
信息
的概念1.2
信息
系统
的定义1.3
信息
系统
的基本...
赞
踩
article
Elasticsearch
可视化
集群
工具
Cerebro
_es
可视化
管理
工具
...
Cerebro
(又称
Elasticsearch
Cerebro
)是一个用于
可视化
和管理
Elasticsearch
集群...
赞
踩
article
ENDNOTE
使用方法_
endnote
打开
别人的
library
...
一、简介 EndNote是一款用于海量文献管理和批量参考文献管理的工具软件,自问世起就成为科研界的必备武器。在前En...
赞
踩
article
深入
了解
java
执行
顺序_
webservice
执行
过程深入理解...
前面我们搞了1,2个DEMO,基本对
webservice
服务发布,调用 ,
执行
有一定的
了解
。今天的话,我们再系统的梳理...
赞
踩
article
改善
工作
流...
Mono模板文件路径:%EDITOR_PATH%\Data\Resources\ScriptTemplates。每次在编...
赞
踩
article
VPX
国产化
千兆
交换板_
vpx
板卡...
WAV16T是一款基于盛科CTC5160和龙芯2K1000处理器的3U三层
千兆
VPX
交换板,提供16个
千兆
电接口。该产品...
赞
踩
article
有
哪些
含金量
较高
的
Python
证书
?,
Python
插件化主流框架和实现原理_
python
有
含金量
的
证...
本文讨论了
Python
工程师实习
证书
的
价值,强调了实际项目经验相对于
证书
在求职中
的
重要性。作者分享了
Python
学习资源...
赞
踩
article
FPGA
HDMI
IP之
DDC
(本质
I2C
协议
)通道学习_
hdmi
i2c协商...
本文详细介绍了如何使用KingstVIS逻辑分析仪软件来分析
HDMI
的
DDC
通道,遵循
I2C
协议
传输的SCDC数据,包括...
赞
踩
article
关于前端不同窗口之间如何
通信
的
思考(
Ifream
页面
之间、
App
与
H5
之间)_
iframe
通讯...
无论是
iframe
页面
间
的
通信
,还是
App
与
H5
页面
的
交互,关键在于选择合适
的
通信
机制,确保数据
的
安全传输与高效处理。_...
赞
踩
article
加油站
税控
数据
管理云平台整体
解决方案
_
加油站
数据
采集
管理系统
解决方案
...
加油站
税控
数据
管理云平台,以
加油站
行业精细化管理为切入口,依托物联网、云技术等信息化手段,强化环节监控和过程管控,形成在...
赞
踩
相关标签
开源
同态加密
人工智能
vue列表渲染
vue v-for
v-for of
template上的v-for
v-for与v-if优先级
组件上使用v-for
vue数组变化侦测
大模型
langchain
产品经理
embedding
ai大模型
LLM
语音识别
python
linux
算法
安全
云计算
网络
fpga开发
verilog