我正在使用创建图像功能,使用以下代码
创建包含确切文本消息的图像<?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);
?>
输出应该是这样的
现在我的问题有什么方法我可以在上面写图像而不仅仅是文字
所以,如果我在相同的路径(flag.gif
)上标记图像,我想在我的$message
之后写出来就像这样
这是可能的,怎么可能! 〜非常感谢
更新
基于@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);
?>
输出不是真彩色为什么:(
关于这个新问题的任何帮助〜谢谢
答案 0 :(得分:4)
在Surreal Dreams
和Marc 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);
?>
输出
我应该学习以下功能
答案 1 :(得分:1)
imagecopy()应正确deal with differences between images' palettes;但是,GIF格式不支持超过256种颜色,并且当它与基于调色板的图像一起使用时也不支持GD。如果GD尝试使用新颜色时已经存在256个调色板条目,GD将选择最接近的匹配,这可以产生您看到的结果。
要避免此问题,您应使用imagecreatetruecolor()在内存中创建24位真彩色图像。然后,您可以使用imagecopy()插入每个GIF图像(包括背景)和imagepng()以生成PNG输出,这对于线条艺术比JPEG更好,提供比GIF更好的压缩,并且可以支持超过256种颜色