专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016
微信咨询
|
联系我们
扫二维码关注公众号
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
网站首页
网站建设
短视频
网站推广
网站模板
客户案例
资讯动态
关于我们
强大的PHP 图片处理类(水印、透明度、缩放、锐化、旋转、翻转、剪切、反色)
当前位置:
网站建设
>
技术支持
强大的PHP 图片处理类(水印、透明度、缩放、锐化、旋转、翻转、剪切、反色)
资料来源:网络整理
时间:
2023/2/14 0:22:13
共计:
3620
浏览
<?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
}
?>
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
相关主题:
节假日网页设计
企业网页设计像素
通识课网页设计
网页设计子页面预览
用macbook设计网页
网页设计自考编程题
dw个人网页设计作品·
网页设计扁平化
太原网站网页设计
北京建筑网页设计
·上一条:
Oracle查询某用户上的表,创建时间
|
·下一条:
PHP图片处理之图片旋转和图片翻转实例
同类资讯
Oracle查询某用户上的表,创建时间
asp.net中URL参数传值中文乱码的三种解决办法
asp与php常用函数对照表(全)
CentOS下配置apache虚拟主机
如何在CentOS配置Apache的HTTPS服务
CentOS 6.8下Apache服务器安装和配置详解
MySQL查询数据表中数据记录(包括多表查询)
mysql创建和删除表
mysql 创建表并设置主键自增
MySQL 选择数据库
mysql查看表结构方法整理
CentOS文件类型及目录配置
mysql 导出存储过程
mysql笔记(一):简单的过程/视图/表状态/导入导出数据到文本/导入
mysql导入数据库的方法
MySQL命令行导入sql数据库
mysql查看所有存储过程,函数,视图,触发器,表
MySQL触发器Trigger实例篇
mysql触发器实例 插入数据前更改数据值
MySQL在triggers表中查看触发器信息
资讯动态
公司新闻
互联网资讯
电商资讯
优化推广
技术支持
关于我们
公司简介
企业文化
服务项目
公司新闻
服务项目
网站建设
网站推广
品牌策划
移动应用
服务支持
在线咨询
服务流程
产品报价
售后服务
联系我们
代理加盟
付款方式
在线留言
联系方式
联系方式
电话:400-683-0016
邮箱:sales@gzit.cn
QQ:250211130
微信:18520775521
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有
粤ICP备16019765号
广州京杭网络科技有限公司 版权所有
返回顶部
400-683-0016
在线咨询
微信二维码