使用图像创建功能

时间:2012-06-12 21:32:34

标签: php gd

我正在使用创建图像功能,使用以下代码

创建包含确切文本消息的图像
<?PHP
header ("Content-type: image/gif");
$image=imagecreatefromgif("myimage.gif"); // will be background img
$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";
imagestring($image, 4, 25, 10, $message, $black);
imagegif($image);
imagedestroy($image);
?>

输出应该是这样的

Hello Egypt

现在我的问题有什么方法我可以在上面写图像而不仅仅是文字 所以,如果我在相同的路径(flag.gif Flag)上标记图像,我想在我的$message之后写出来就像这样

Hello Egypt Flag

这是可能的,怎么可能! 〜非常感谢

更新 基于@MarcB使用imagecopy函数

的想法
<?PHP
header ("Content-type: image/gif");
$image=imagecreatefromgif("myimage.gif"); // will be background img


$src = imagecreatefromjpeg('flag.jpg');// new image will add
imagecopy($image, $src, 120, 10, 0, 0, 32, 20);

$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";
imagestring($image, 4, 25, 10, $message, $black);

imagegif($image);
imagedestroy($image);
?>

输出不是真彩色为什么:(

enter image description here

关于这个新问题的任何帮助〜谢谢

2 个答案:

答案 0 :(得分:4)

Surreal DreamsMarc B的帮助下 这个工作正常

<?PHP
header ("Content-type: image/gif");

$image=imagecreatefromjpeg("myimage.jpg"); // will be background img

$src = imagecreatefromjpeg('flag.jpg');// new image will add

imagecopy($image, $src, 120, 10, 0, 0, 32, 20);


$black = imagecolorallocate($image, 0,0,0);
$message = "Hello Egypt";

imagestring($image, 4, 25, 10, $message, $black);
imagegif($image);
imagedestroy($image);
?>

输出

enter image description here

我应该学习以下功能

  1. imagecopy
  2. imagecreatefromjpeg
  3. imagecreatefromgif

答案 1 :(得分:1)

imagecopy()应正确deal with differences between images' palettes;但是,GIF格式不支持超过256种颜色,并且当它与基于调色板的图像一起使用时也不支持GD。如果GD尝试使用新颜色时已经存在256个调色板条目,GD将选择最接近的匹配,这可以产生您看到的结果。

要避免此问题,您应使用imagecreatetruecolor()在内存中创建24位真彩色图像。然后,您可以使用imagecopy()插入每个GIF图像(包括背景)和imagepng()以生成PNG输出,这对于线条艺术比JPEG更好,提供比GIF更好的压缩,并且可以支持超过256种颜色