专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
位置:
网站建设
>
技术支持
> 强大的PHP 图片处理类(水印、透明度、缩放、锐化、旋转、翻转、剪切、反色)
强大的PHP 图片处理类(水印、透明度、缩放、锐化、旋转、翻转、剪切、反色)
来源:网络整理 时间:2023/2/14 0:22:13 共
3643
浏览
<?php
/**
* 图片处理函数功能:缩放、剪切、相框、水印、锐化、旋转、翻转、透明度、反色
* 处理并保存历史记录的思路:当有图片有改动时自动生成一张新图片,命名方式可以考虑在原图片的基础上加上步骤,例如:图片名称+__第几步
* 网址:http://www.phpernote.com
*/
class
picture{
var
$PICTURE_URL
;
//要处理的图片
var
$DEST_URL
=
"temp__01.jpg"
;
//生成目标图片位置
var
$PICTURE_CREATE
;
//要创建的图片
var
$TURE_COLOR
;
//新建一个真彩图象
var
$PICTURE_WIDTH
;
//原图片宽度
var
$PICTURE_HEIGHT
;
//原图片高度
/**
* 水印的类型,默认的为水印文字
*/
var
$MARK_TYPE
= 1;
var
$WORD
;
//经过UTF-8后的文字
var
$WORD_X
;
//文字横坐标
var
$WORD_Y
;
//文字纵坐标
var
$FONT_TYPE
;
//字体类型
var
$FONT_SIZE
=
"12"
;
//字体大小
var
$FONT_WORD
;
//文字
var
$ANGLE
= 0;
//文字的角度,默认为0
var
$FONT_COLOR
=
"#000000"
;
//文字颜色
var
$FONT_PATH
=
"font/simkai.ttf"
;
//字体库,默认为宋体
var
$FORCE_URL
;
//水印图片
var
$FORCE_X
= 0;
//水印横坐标
var
$FORCE_Y
= 0;
//水印纵坐标
var
$FORCE_START_X
= 0;
//切起水印的图片横坐标
var
$FORCE_START_Y
= 0;
//切起水印的图片纵坐标
var
$PICTURE_TYPE
;
//图片类型
var
$PICTURE_MIME
;
//输出的头部
/**
* 缩放比例为1的话就按缩放高度和宽度缩放
*/
var
$ZOOM
= 1;
//缩放类型
var
$ZOOM_MULTIPLE
;
//缩放比例
var
$ZOOM_WIDTH
;
//缩放宽度
var
$ZOOM_HEIGHT
;
//缩放高度
/**
* 裁切,按比例和固定长度、宽度
*/
var
$CUT_TYPE
= 1;
//裁切类型
var
$CUT_X
= 0;
//裁切的横坐标
var
$CUT_Y
= 0;
//裁切的纵坐标
var
$CUT_WIDTH
= 100;
//裁切的宽度
var
$CUT_HEIGHT
= 100;
//裁切的高度
/**
* 锐化
*/
var
$SHARP
=
"7.0"
;
//锐化程度
/**
* 透明度处理
*/
var
$ALPHA
=
'100'
;
//透明度在0-127之间
var
$ALPHA_X
=
"90"
;
var
$ALPHA_Y
=
"50"
;
/**
* 任意角度旋转
*/
var
$CIRCUMROTATE
=
"90.0"
;
//注意,必须为浮点数
/**
* 出错信息
*/
var
$ERROR
=
array
(
'unalviable'
=>
'没有找到相关图片!'
);
/**
* 构造函数:函数初始化
*/
function
__construct(
$PICTURE_URL
){
$this
-> get_info(
$PICTURE_URL
);
}
function
get_info(
$PICTURE_URL
){
/**
* 处理原图片的信息,先检测图片是否存在,不存在则给出相应的信息
*/
@
$SIZE
=
getimagesize
(
$PICTURE_URL
);
if
(!
$SIZE
){
exit
(
$this
-> ERROR[
'unalviable'
]);
}
// 得到原图片的信息类型、宽度、高度
$this
-> PICTURE_MIME =
$SIZE
[
'mime'
];
$this
-> PICTURE_WIDTH =
$SIZE
[0];
$this
-> PICTURE_HEIGHT =
$SIZE
[1];
// 创建图片
switch
(
$SIZE
[2]){
case
1:
$this
-> PICTURE_CREATE = imagecreatefromgif(
$PICTURE_URL
);
$this
-> PICTURE_TYPE =
"imagejpeg"
;
$this
-> PICTURE_EXT =
"jpg"
;
break
;
case
2:
$this
-> PICTURE_CREATE = imagecreatefromjpeg(
$PICTURE_URL
);
$this
-> PICTURE_TYPE =
"imagegif"
;
$this
-> PICTURE_EXT =
"gif"
;
break
;
case
3:
$this
-> PICTURE_CREATE = imagecreatefrompng(
$PICTURE_URL
);
$this
-> PICTURE_TYPE =
"imagepng"
;
$this
-> PICTURE_EXT =
"png"
;
break
;
}
/**
* 文字颜色转换16进制转换成10进制
*/
preg_match_all(
"/([0-f]){2,2}/i"
,
$this
-> FONT_COLOR,
$MATCHES
);
if
(
count
(
$MATCHES
) == 3){
$this
-> RED = hexdec(
$MATCHES
[0][0]);
$this
-> GREEN = hexdec(
$MATCHES
[0][1]);
$this
-> BLUE = hexdec(
$MATCHES
[0][2]);
}
}
#
end
of __construct
/**
* 将16进制的颜色转换成10进制的(R,G,B)
*/
function
hex2dec(){
preg_match_all(
"/([0-f]){2,2}/i"
,
$this
-> FONT_COLOR,
$MATCHES
);
if
(
count
(
$MATCHES
) == 3){
$this
-> RED = hexdec(
$MATCHES
[0][0]);
$this
-> GREEN = hexdec(
$MATCHES
[0][1]);
$this
-> BLUE = hexdec(
$MATCHES
[0][2]);
}
}
// 缩放类型
function
zoom_type(
$ZOOM_TYPE
){
$this
-> ZOOM =
$ZOOM_TYPE
;
}
// 对图片进行缩放,如果不指定高度和宽度就进行缩放
function
zoom(){
// 缩放的大小
if
(
$this
-> ZOOM == 0){
$this
-> ZOOM_WIDTH =
$this
-> PICTURE_WIDTH *
$this
-> ZOOM_MULTIPLE;
$this
-> ZOOM_HEIGHT =
$this
-> PICTURE_HEIGHT *
$this
-> ZOOM_MULTIPLE;
}
// 新建一个真彩图象
$this
-> TRUE_COLOR = imagecreatetruecolor(
$this
-> ZOOM_WIDTH,
$this
-> ZOOM_HEIGHT);
$WHITE
= imagecolorallocate(
$this
-> TRUE_COLOR, 255, 255, 255);
imagefilledrectangle(
$this
-> TRUE_COLOR, 0, 0,
$this
-> ZOOM_WIDTH,
$this
-> ZOOM_HEIGHT,
$WHITE
);
imagecopyresized(
$this
-> TRUE_COLOR,
$this
-> PICTURE_CREATE, 0, 0, 0, 0,
$this
-> ZOOM_WIDTH,
$this
-> ZOOM_HEIGHT,
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
}
#
end
of zoom
// 裁切图片,按坐标或自动
function
cut(){
$this
-> TRUE_COLOR = imagecreatetruecolor(
$this
-> CUT_WIDTH,
$this
-> CUT_WIDTH);
imagecopy(
$this
-> TRUE_COLOR,
$this
-> PICTURE_CREATE, 0, 0,
$this
-> CUT_X,
$this
-> CUT_Y,
$this
-> CUT_WIDTH,
$this
-> CUT_HEIGHT);
}
#
end
of cut
/**
* 在图片上放文字或图片
* 水印文字
*/
function
_mark_text(){
$this
-> TRUE_COLOR = imagecreatetruecolor(
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
$this
-> WORD = mb_convert_encoding(
$this
-> FONT_WORD,
'utf-8'
,
'gb2312'
);
/**
* 取得使用 TrueType 字体的文本的范围
*/
$TEMP
= imagettfbbox(
$this
-> FONT_SIZE, 0,
$this
-> FONT_PATH,
$this
-> WORD);
$WORD_LENGTH
=
strlen
(
$this
-> WORD);
$WORD_WIDTH
=
$TEMP
[2] -
$TEMP
[6];
$WORD_HEIGHT
=
$TEMP
[3] -
$TEMP
[7];
/**
* 文字水印的默认位置为右下角
*/
if
(
$this
-> WORD_X ==
""
){
$this
-> WORD_X =
$this
-> PICTURE_WIDTH -
$WORD_WIDTH
;
}
if
(
$this
-> WORD_Y ==
""
){
$this
-> WORD_Y =
$this
-> PICTURE_HEIGHT -
$WORD_HEIGHT
;
}
imagesettile(
$this
-> TRUE_COLOR,
$this
-> PICTURE_CREATE);
imagefilledrectangle(
$this
-> TRUE_COLOR, 0, 0,
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT, IMG_COLOR_TILED);
$TEXT2
= imagecolorallocate(
$this
-> TRUE_COLOR,
$this
-> RED,
$this
-> GREEN,
$this
-> Blue);
imagettftext(
$this
-> TRUE_COLOR,
$this
-> FONT_SIZE,
$this
-> ANGLE,
$this
-> WORD_X,
$this
-> WORD_Y,
$TEXT2
,
$this
-> FONT_PATH,
$this
-> WORD);
}
/**
* 水印图片
*/
function
_mark_picture(){
/**
* 获取水印图片的信息
*/
@
$SIZE
=
getimagesize
(
$this
-> FORCE_URL);
if
(!
$SIZE
){
exit
(
$this
-> ERROR[
'unalviable'
]);
}
$FORCE_PICTURE_WIDTH
=
$SIZE
[0];
$FORCE_PICTURE_HEIGHT
=
$SIZE
[1];
// 创建水印图片
switch
(
$SIZE
[2]){
case
1:
$FORCE_PICTURE_CREATE
= imagecreatefromgif(
$this
-> FORCE_URL);
$FORCE_PICTURE_TYPE
=
"gif"
;
break
;
case
2:
$FORCE_PICTURE_CREATE
= imagecreatefromjpeg(
$this
-> FORCE_URL);
$FORCE_PICTURE_TYPE
=
"jpg"
;
break
;
case
3:
$FORCE_PICTURE_CREATE
= imagecreatefrompng(
$this
-> FORCE_URL);
$FORCE_PICTURE_TYPE
=
"png"
;
break
;
}
/**
* 判断水印图片的大小,并生成目标图片的大小,如果水印比图片大,则生成图片大小为水印图片的大小。否则生成的图片大小为原图片大小。
*/
$this
-> NEW_PICTURE =
$this
-> PICTURE_CREATE;
if
(
$FORCE_PICTURE_WIDTH
>
$this
-> PICTURE_WIDTH){
$CREATE_WIDTH
=
$FORCE_PICTURE_WIDTH
-
$this
-> FORCE_START_X;
}
else
{
$CREATE_WIDTH
=
$this
-> PICTURE_WIDTH;
}
if
(
$FORCE_PICTURE_HEIGHT
>
$this
-> PICTURE_HEIGHT){
$CREATE_HEIGHT
=
$FORCE_PICTURE_HEIGHT
-
$this
-> FORCE_START_Y;
}
else
{
$CREATE_HEIGHT
=
$this
-> PICTURE_HEIGHT;
}
/**
* 创建一个画布
*/
$NEW_PICTURE_CREATE
= imagecreatetruecolor(
$CREATE_WIDTH
,
$CREATE_HEIGHT
);
$WHITE
= imagecolorallocate(
$NEW_PICTURE_CREATE
, 255, 255, 255);
/**
* 将背景图拷贝到画布中
*/
imagecopy(
$NEW_PICTURE_CREATE
,
$this
-> PICTURE_CREATE, 0, 0, 0, 0,
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
/**
* 将目标图片拷贝到背景图片上
*/
imagecopy(
$NEW_PICTURE_CREATE
,
$FORCE_PICTURE_CREATE
,
$this
-> FORCE_X,
$this
-> FORCE_Y,
$this
-> FORCE_START_X,
$this
-> FORCE_START_Y,
$FORCE_PICTURE_WIDTH
,
$FORCE_PICTURE_HEIGHT
);
$this
-> TRUE_COLOR =
$NEW_PICTURE_CREATE
;
}
#
end
of mark
function
alpha_(){
$this
-> TRUE_COLOR = imagecreatetruecolor(
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
$rgb
=
"#CDCDCD"
;
$tran_color
=
"#000000"
;
for
(
$j
= 0;
$j
<=
$this
-> PICTURE_HEIGHT-1;
$j
++){
for
(
$i
= 0;
$i
<=
$this
-> PICTURE_WIDTH-1;
$i
++)
{
$rgb
= imagecolorat(
$this
-> PICTURE_CREATE,
$i
,
$j
);
$r
= (
$rgb
>> 16) & 0xFF;
$g
= (
$rgb
>> 8) & 0xFF;
$b
=
$rgb
& 0xFF;
$now_color
= imagecolorallocate(
$this
-> PICTURE_CREATE,
$r
,
$g
,
$b
);
if
(
$now_color
==
$tran_color
)
{
continue
;
}
else
{
$color
= imagecolorallocatealpha(
$this
-> PICTURE_CREATE,
$r
,
$g
,
$b
,
$ALPHA
);
imagesetpixel(
$this
-> PICTURE_CREATE,
$ALPHA_X
+
$i
,
$ALPHA_Y
+
$j
,
$color
);
}
$this
-> TRUE_COLOR =
$this
-> PICTURE_CREATE;
}
}
}
/**
* 图片旋转:
* 沿y轴旋转
*/
function
turn_y(){
$this
-> TRUE_COLOR = imagecreatetruecolor(
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
for
(
$x
= 0;
$x
<
$this
-> PICTURE_WIDTH;
$x
++)
{
imagecopy(
$this
-> TRUE_COLOR,
$this
-> PICTURE_CREATE,
$this
-> PICTURE_WIDTH -
$x
- 1, 0,
$x
, 0, 1,
$this
-> PICTURE_HEIGHT);
}
}
/**
* 沿X轴旋转
*/
function
turn_x(){
$this
-> TRUE_COLOR = imagecreatetruecolor(
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
for
(
$y
= 0;
$y
<
$this
-> PICTURE_HEIGHT;
$y
++){
imagecopy(
$this
-> TRUE_COLOR,
$this
-> PICTURE_CREATE, 0,
$this
-> PICTURE_HEIGHT -
$y
- 1, 0,
$y
,
$this
-> PICTURE_WIDTH, 1);
}
}
/**
* 任意角度旋转
*/
function
turn(){
$this
-> TRUE_COLOR = imagecreatetruecolor(
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
imageCopyResized(
$this
-> TRUE_COLOR,
$this
-> PICTURE_CREATE, 0, 0, 0, 0,
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT,
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
$WHITE
= imagecolorallocate(
$this
-> TRUE_COLOR, 255, 255, 255);
$this
-> TRUE_COLOR = imagerotate (
$this
-> TRUE_COLOR,
$this
-> CIRCUMROTATE,
$WHITE
);
}
/**
* 图片锐化
*/
function
sharp(){
$this
-> TRUE_COLOR = imagecreatetruecolor(
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
$cnt
= 0;
for
(
$x
= 0;
$x
<
$this
-> PICTURE_WIDTH;
$x
++){
for
(
$y
= 0;
$y
<
$this
-> PICTURE_HEIGHT;
$y
++){
$src_clr1
= imagecolorsforindex(
$this
-> TRUE_COLOR, imagecolorat(
$this
-> PICTURE_CREATE,
$x
-1,
$y
-1));
$src_clr2
= imagecolorsforindex(
$this
-> TRUE_COLOR, imagecolorat(
$this
-> PICTURE_CREATE,
$x
,
$y
));
$r
=
intval
(
$src_clr2
[
"red"
] +
$this
-> SHARP * (
$src_clr2
[
"red"
] -
$src_clr1
[
"red"
]));
$g
=
intval
(
$src_clr2
[
"green"
] +
$this
-> SHARP * (
$src_clr2
[
"green"
] -
$src_clr1
[
"green"
]));
$b
=
intval
(
$src_clr2
[
"blue"
] +
$this
-> SHARP * (
$src_clr2
[
"blue"
] -
$src_clr1
[
"blue"
]));
$r
= min(255, max(
$r
, 0));
$g
= min(255, max(
$g
, 0));
$b
= min(255, max(
$b
, 0));
if
((
$DST_CLR
= imagecolorexact(
$this
-> PICTURE_CREATE,
$r
,
$g
,
$b
)) == -1)
$DST_CLR
= imagecolorallocate(
$this
-> PICTURE_CREATE,
$r
,
$g
,
$b
);
$cnt
++;
if
(
$DST_CLR
== -1)
die
(
"color allocate faile at $x, $y ($cnt)."
);
imagesetpixel(
$this
-> TRUE_COLOR,
$x
,
$y
,
$DST_CLR
);
}
}
}
/**
* 将图片反色处理??
*/
function
return_color(){
/**
* 创建一个画布
*/
$NEW_PICTURE_CREATE
= imagecreate(
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
$WHITE
= imagecolorallocate(
$NEW_PICTURE_CREATE
, 255, 255, 255);
/**
* 将背景图拷贝到画布中
*/
imagecopy(
$NEW_PICTURE_CREATE
,
$this
-> PICTURE_CREATE, 0, 0, 0, 0,
$this
-> PICTURE_WIDTH,
$this
-> PICTURE_HEIGHT);
$this
-> TRUE_COLOR =
$NEW_PICTURE_CREATE
;
}
/**
* 生成目标图片并显示
*/
function
show(){
// 判断浏览器,若是IE就不发送头
if
(isset(
$_SERVER
[
'HTTP_USER_AGENT'
]))
{
$ua
=
strtoupper
(
$_SERVER
[
'HTTP_USER_AGENT'
]);
if
(!preg_match(
'/^.*MSIE.*\)$/i'
,
$ua
))
{
header(
"Content-type:$this->PICTURE_MIME"
);
}
}
$OUT
=
$this
-> PICTURE_TYPE;
$OUT
(
$this
-> TRUE_COLOR);
}
/**
* 生成目标图片并保存
*/
function
save_picture(){
// 以 JPEG 格式将图像输出到浏览器或文件
$OUT
=
$this
-> PICTURE_TYPE;
if
(function_exists(
$OUT
)){
// 判断浏览器,若是IE就不发送头
if
(isset(
$_SERVER
[
'HTTP_USER_AGENT'
]))
{
$ua
=
strtoupper
(
$_SERVER
[
'HTTP_USER_AGENT'
]);
if
(!preg_match(
'/^.*MSIE.*\)$/i'
,
$ua
))
{
header(
"Content-type:$this->PICTURE_MIME"
);
}
}
if
(!
$this
-> TRUE_COLOR){
exit
(
$this
-> ERROR[
'unavilable'
]);
}
else
{
$OUT
(
$this
-> TRUE_COLOR,
$this
-> DEST_URL);
$OUT
(
$this
-> TRUE_COLOR);
}
}
}
/**
* 析构函数:释放图片
*/
function
__destruct(){
/**
* 释放图片
*/
imagedestroy(
$this
-> TRUE_COLOR);
imagedestroy(
$this
-> PICTURE_CREATE);
}
#
end
of
class
}
?>
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
滁州网站制作头像素材照片
长沙网站制作公司名字高级
长征电影网站海报制作
历史教学论文网站设计制作
OK卡网站制作流程和步骤
网站制作公司起名字高级
网页游戏网站视频制作软件
高清图片网站制作流程视频
广州旅游网站制作流程视频
雅思学习网站制作软件免费
·上一条:
Oracle查询某用户上的表,创建时间
|
·下一条:
PHP图片处理之图片旋转和图片翻转实例
同类资讯
如何清除手机APP支付宝钱包的缓存_服务器
鞍山宽带哪家好_服务器
E5和E5410一样吗_服务器
为什么我招不到人呢_java
one和mma的区别_数据库
小米10系列的海外版包装因为一句话就错了吗_数据库
梦幻西游散人区排行_服务器
内存问题dimm和ddr的区别_数据库
时分多址是什么意思_数据库
后面显示IP地址是怎么_服务器
到底要不要上网课_服务器
frontiers_数据库
你认为香奈儿哪款包包最时尚_服务器
is操作系统优势特点_数据库
材料力学弹性理论公式_服务器
联通用户能开通微信吗_服务器
sai删除内容快捷键_java
使路由器的某一些端口不能上网_数据库
汉得信息主营业务_数据库
速腾2014款防盗系统激活_服务器
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-963-0016
邮箱:sales@itwy.com
QQ:250211130
微信:18520775521
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州京杭网络科技有限公司 版权所有
18520775521
QQ洽谈
sales@itwy.com