1

我正在使用创建图像功能使用以下代码创建带有确切文本消息的图像

<?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);
?>

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

在此处输入图像描述

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

4

2 回答 2

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);
?>

输出

在此处输入图像描述

我应该已经学会了以下功能

  1. imagecopy
  2. imagecreatefromjpeg
  3. imagecreatefromgif
于 2012-06-12T22:34:19.867 回答
1

imagecopy() 应该正确处理图像调色板之间的差异;但是,GIF 格式不支持超过 256 种颜色,GD 在处理基于调色板的图像时也不支持。如果 GD 尝试使用新颜色时已经存在 256 个调色板条目,GD 将选择最接近的匹配,这可以产生您看到的结果。

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

于 2012-06-12T22:50:25.000 回答