<?php
class
image{
private
$types
;
private
$imgtype
;
private
$image
;
private
$width
;
private
$height
;
private
$value1
;
private
$value2
;
private
$endaddress
;
function
__construct(
$imageaddress
,
$types
,
$value1
=
""
,
$value2
=
""
,
$endaddress
){
$this
->types=
$types
;
$this
->image=
$this
->imagesources(
$imageaddress
);
$this
->width=
$this
->imagesizex();
$this
->height=
$this
->imagesizey();
$this
->value1=
$value1
;
$this
->value2=
$value2
;
$this
->endaddress=
$endaddress
;
}
function
outimage(){
switch
(
$this
->types){
case
1:
$this
->scaling();
break
;
case
2:
$this
->clipping();
break
;
case
3:
$this
->imagewater();
break
;
default
:
return
false;
}
}
private
function
imagewater(){
$imagearrs
=
$this
->getimagearr(
$this
->value1);
$positionarr
=
$this
->position(
$this
->value2,
$imagearrs
[0],
$imagearrs
[1]);
imagecopy(
$this
->image,
$this
->imagesources(
$this
->value1),
$positionarr
[0],
$positionarr
[1], 0, 0,
$imagearrs
[0],
$imagearrs
[1]);
$this
->output(
$this
->image);
}
private
function
clipping(){
list(
$src_x
,
$src_y
)=
explode
(
","
,
$this
->value1);
list(
$dst_w
,
$dst_h
)=
explode
(
","
,
$this
->value2);
if
(
$this
->width <
$src_x
+
$dst_w
||
$this
->height <
$src_y
+
$dst_h
){
return
false;
}
$newimg
=imagecreatetruecolor(
$dst_w
,
$dst_h
);
imagecopyresampled(
$newimg
,
$this
->image, 0, 0,
$src_x
,
$src_y
,
$dst_w
,
$dst_h
,
$dst_w
,
$dst_h
);
$this
->output(
$newimg
);
}
private
function
scaling(){
$this
-> proimagesize();
$this
->output(
$this
->imagescaling());
}
private
function
imagesources(
$imgad
){
$imagearray
=
$this
->getimagearr(
$imgad
);
switch
(
$imagearray
[2]){
case
1:
$this
->imgtype=1;
$img
=imagecreatefromgif(
$imgad
);
break
;
case
2:
$this
->imgtype=2;
$img
=imagecreatefromjpeg(
$imgad
);
break
;
case
3:
$this
->imgtype=3;
$img
=imagecreatefrompng(
$imgad
);
break
;
default
:
return
false;
}
return
$img
;
}
private
function
imagesizex(){
return
imagesx(
$this
->image);
}
private
function
imagesizey(){
return
imagesy(
$this
->image);
}
private
function
proimagesize(){
if
(
$this
->value1 && (
$this
->width <
$this
->height)) {
$this
->value1=
round
((
$this
->value2/
$this
->height)*
$this
->width);
}
else
{
$this
->value2=
round
((
$this
->value1/
$this
->width) *
$this
->height);
}
}
private
function
imagescaling(){
$newimg
=imagecreatetruecolor(
$this
->value1,
$this
->value2);
$tran
=imagecolortransparent(
$this
->image);
if
(
$tran
>= 0 &&
$tran
< imagecolorstotal(
$this
->image)){
$tranarr
=imagecolorsforindex(
$this
->image,
$tran
);
$newcolor
=imagecolorallocate(
$newimg
,
$tranarr
[
'red'
],
$tranarr
[
'green'
],
$tranarr
[
'blue'
]);
imagefill(
$newimg
, 0, 0,
$newcolor
);
imagecolortransparent(
$newimg
,
$newcolor
);
}
imagecopyresampled(
$newimg
,
$this
->image, 0, 0, 0, 0,
$this
->value1,
$this
->value2,
$this
->width,
$this
->height);
return
$newimg
;
}
private
function
output(
$image
){
switch
(
$this
->imgtype){
case
1:
imagegif(
$image
,
$this
->endaddress);
break
;
case
2:
imagejpeg(
$image
,
$this
->endaddress);
break
;
case
3:
imagepng(
$image
,
$this
->endaddress);
break
;
default
:
return
false;
}
}
private
function
getimagearr(
$imagesou
){
return
getimagesize
(
$imagesou
);
}
private
function
position(
$num
,
$width
,
$height
){
switch
(
$num
){
case
1:
$positionarr
[0]=0;
$positionarr
[1]=0;
break
;
case
2:
$positionarr
[0]=(
$this
->width-
$width
)/2;
$positionarr
[1]=0;
break
;
case
3:
$positionarr
[0]=
$this
->width-
$width
;
$positionarr
[1]=0;
break
;
case
4:
$positionarr
[0]=0;
$positionarr
[1]=(
$this
->height-
$height
)/2;
break
;
case
5:
$positionarr
[0]=(
$this
->width-
$width
)/2;
$positionarr
[1]=(
$this
->height-
$height
)/2;
break
;
case
6:
$positionarr
[0]=
$this
->width-
$width
;
$positionarr
[1]=(
$this
->height-
$height
)/2;
break
;
case
7:
$positionarr
[0]=0;
$positionarr
[1]=
$this
->height-
$height
;
break
;
case
8:
$positionarr
[0]=(
$this
->width-
$width
)/2;
$positionarr
[1]=
$this
->height-
$height
;
break
;
case
9:
$positionarr
[0]=
$this
->width-
$width
;
$positionarr
[1]=
$this
->height-
$height
;
break
;
case
0:
$positionarr
[0]=rand(0,
$this
->width-
$width
);
$positionarr
[1]=rand(0,
$this
->height-
$height
);
break
;
}
return
$positionarr
;
}
function
__destruct(){
imagedestroy(
$this
->image);
}
}
?>