function
createPoster(
$config
=
array
(),
$filename
=
""
){
if
(
empty
(
$filename
)) header(
"content-type: image/png"
);
$imageDefault
=
array
(
'left'=>0,
'top'=>0,
'right'=>0,
'bottom'=>0,
'width'=>100,
'height'=>100,
'opacity'=>100
);
$textDefault
=
array
(
'text'=>'',
'left'=>0,
'top'=>0,
'fontSize'=>32,
'fontColor'=>'255,255,255',
'angle'=>0,
);
$background
=
$config
['background'];
$backgroundInfo
=
getimagesize
(
$background
);
$backgroundFun
= 'imagecreatefrom'.image_type_to_extension(
$backgroundInfo
[2], false);
$background
=
$backgroundFun
(
$background
);
$backgroundWidth
= imagesx(
$background
);
$backgroundHeight
= imagesy(
$background
);
$imageRes
= imageCreatetruecolor(
$backgroundWidth
,
$backgroundHeight
);
$color
= imagecolorallocate(
$imageRes
, 0, 0, 0);
imagefill(
$imageRes
, 0, 0,
$color
);
imagecopyresampled(
$imageRes
,
$background
,0,0,0,0,imagesx(
$background
),imagesy(
$background
),imagesx(
$background
),imagesy(
$background
));
if
(!
empty
(
$config
['image'])){
foreach
(
$config
['image']
as
$key
=>
$val
) {
$val
=
array_merge
(
$imageDefault
,
$val
);
$info
=
getimagesize
(
$val
['url']);
$function
= 'imagecreatefrom'.image_type_to_extension(
$info
[2], false);
if
(
$val
['stream']){
$info
= getimagesizefromstring(
$val
['url']);
$function
= 'imagecreatefromstring';
}
$res
=
$function
(
$val
['url']);
$resWidth
=
$info
[0];
$resHeight
=
$info
[1];
$canvas
=imagecreatetruecolor(
$val
['width'],
$val
['height']);
imagefill(
$canvas
, 0, 0,
$color
);
imagecopyresampled(
$canvas
,
$res
, 0, 0, 0, 0,
$val
['width'],
$val
['height'],
$resWidth
,
$resHeight
);
$val
['left'] =
$val
['left']<0?
$backgroundWidth
-
abs
(
$val
['left']) -
$val
['width']:
$val
['left'];
$val
['top'] =
$val
['top']<0?
$backgroundHeight
-
abs
(
$val
['top']) -
$val
['height']:
$val
['top'];
imagecopymerge(
$imageRes
,
$canvas
,
$val
['left'],
$val
['top'],
$val
['right'],
$val
['bottom'],
$val
['width'],
$val
['height'],
$val
['opacity']);
}
}
if
(!
empty
(
$config
['text'])){
foreach
(
$config
['text']
as
$key
=>
$val
) {
$val
=
array_merge
(
$textDefault
,
$val
);
list(
$R
,
$G
,
$B
) =
explode
(',',
$val
['fontColor']);
$fontColor
= imagecolorallocate(
$imageRes
,
$R
,
$G
,
$B
);
$val
['left'] =
$val
['left']<0?
$backgroundWidth
-
abs
(
$val
['left']):
$val
['left'];
$val
['top'] =
$val
['top']<0?
$backgroundHeight
-
abs
(
$val
['top']):
$val
['top'];
imagettftext(
$imageRes
,
$val
['fontSize'],
$val
['angle'],
$val
['left'],
$val
['top'],
$fontColor
,
$val
['fontPath'],
$val
['text']);
}
}
if
(!
empty
(
$filename
)){
$res
= imagejpeg (
$imageRes
,
$filename
,90);
imagedestroy(
$imageRes
);
if
(!
$res
)
return
false;
return
$filename
;
}
else
{
imagejpeg (
$imageRes
);
imagedestroy(
$imageRes
);
}
}