<?php
class
ImageTool
{
private
$imagePath
;
private
$outputDir
;
private
$memoryImg
;
public
function
construct(
$imagePath
,
$outputDir
= null)
{
$this
->imagePath =
$imagePath
;
$this
->outputDir =
$outputDir
;
$this
->memoryImg = null;
}
public
function
showImage()
{
if
(
$this
->memoryImg != null) {
$info
=
getimagesize
(
$this
->imagePath);
$type
= image_type_to_extension(
$info
[2], false);
header(
'Content-type:'
.
$info
[
'mime'
]);
$funs
=
"image{$type}"
;
$funs
(
$this
->memoryImg);
imagedestroy(
$this
->memoryImg);
$this
->memoryImg = null;
}
}
private
function
saveImage(
$image
)
{
$info
=
getimagesize
(
$this
->imagePath);
$type
= image_type_to_extension(
$info
[2], false);
$funs
=
"image{$type}"
;
if
(
empty
(
$this
->outputDir)) {
$funs
(
$image
, md5(
$this
->imagePath) .
'.'
.
$type
);
}
else
{
$funs
(
$image
,
$this
->outputDir . md5(
$this
->imagePath) .
'.'
.
$type
);
}
}
public
function
compressImage(
$width
,
$height
,
$output
= false)
{
$image
= null;
$info
=
getimagesize
(
$this
->imagePath);
$type
= image_type_to_extension(
$info
[2], false);
$fun
=
"imagecreatefrom{$type}"
;
$image
=
$fun
(
$this
->imagePath);
$thumbnail
= imagecreatetruecolor(
$width
,
$height
);
imagecopyresampled(
$thumbnail
,
$image
, 0, 0, 0, 0,
$width
,
$height
,
$info
[0],
$info
[1]);
imagedestroy(
$image
);
if
(
$output
) {
$this
->saveImage(
$thumbnail
);
}
$this
->memoryImg =
$thumbnail
;
return
$this
;
}
public
function
addTextmark(
$content
,
$size
,
$font
,
$output
= false)
{
$info
=
getimagesize
(
$this
->imagePath);
$type
= image_type_to_extension(
$info
[2], false);
$fun
=
"imagecreatefrom{$type}"
;
$image
=
$fun
(
$this
->imagePath);
$color
= imagecolorallocatealpha(
$image
, 0, 0, 0, 80);
$posX
= imagesx(
$image
) -
strlen
(
$content
) *
$size
/ 2;
$posY
= imagesy(
$image
) -
$size
/ 1.5;
imagettftext(
$image
,
$size
, 0,
$posX
,
$posY
,
$color
,
$font
,
$content
);
if
(
$output
) {
$this
->saveImage(
$image
);
}
$this
->memoryImg =
$image
;
return
$this
;
}
public
function
addWatermark(
$watermark
,
$alpha
,
$output
= false)
{
$image_info
=
getimagesize
(
$this
->imagePath);
$image_type
= image_type_to_extension(
$image_info
[2], false);
$image_fun
=
"imagecreatefrom{$image_type}"
;
$image
=
$image_fun
(
$this
->imagePath);
$mark_info
=
getimagesize
(
$watermark
);
$mark_type
= image_type_to_extension(
$mark_info
[2], false);
$mark_fun
=
"imagecreatefrom{$mark_type}"
;
$mark
=
$mark_fun
(
$watermark
);
$posX
= imagesx(
$image
) - imagesx(
$mark
);
$posY
= imagesy(
$image
) - imagesy(
$mark
);
imagecopymerge(
$image
,
$mark
,
$posX
,
$posY
, 0, 0,
$mark_info
[0],
$mark_info
[1],
$alpha
);
if
(
$output
) {
$this
->saveImage(
$image
);
}
$this
->memoryImg =
$image
;
return
$this
;
}
}