【问题标题】:Dynamic PHP image with a PNG extension带有 PNG 扩展名的动态 PHP 图像
【发布时间】:2011-09-30 04:21:36
【问题描述】:

我正在尝试制作类似于以下之一的图像:http://www.danasoft.com/vipersig.jpg

不是真正的内容明智(显示 IP 地址和标头),但更多的是以 PNG 格式显示的 PHP 图像(所以我可以在网站上使用它,在 BB 图像标签中)。

我知道如何创建动态图像,但这只是在您访问 PHP 页面时。如果重要的话,目前正在使用它:

$image = imagecreate(200, 60);
$text_color = imagecolorallocate($image, 255, 255, 0);

header("Content-type: image/png");

imagestring($image, 4, 40, 30, "hello", $text_color);

imagepng($image);
imagecolordeallocate($text_color);
imagedestroy($image);

对如何实现这一点有任何想法吗?

我正在寻找的更多示例是:http://draynor.net/signatures

编辑:大多数 cmets 都是关于从 PNG 转换为 PHP,我想从 PHP 转换为 PNG,只是为了清除它。

【问题讨论】:

  • 它实际上看起来像那个代码,从 php 手册中复制就可以了。您可能只需要从基础图像开始,然后将“hello”更改为更有趣的内容。
  • @ChrisHenry 问题是我只能通过 file.php 访问它,而不是 file.png,这是我正在寻找的。​​span>
  • 但是……为什么?文件扩展名并不重要。如果出于某种原因它应该重要,您始终可以使用内容处置标头。
  • 你不能将 PHP 扩展作为图像嵌入到网站上,这就是我正在寻找的(嵌入到网站中的东西)。
  • 如果它是 your 网站,您绝对可以嵌入以 .php 结尾的 URL 作为图像。您的浏览器只关心内容类型是否正确。也许一些写得不好的论坛软件要求它以 .png 结尾,但我不认为这是常态。

标签: php png image-conversion


【解决方案1】:

你很接近,像上面一样创建你的图像,有用的变量是$_SERVER['REMOTE_ADDR'](IP 地址),$_SERVER['HTTP_USER_AGENT'](浏览器)。请参阅reserved server variables。

在您的图像上设置它们的格式,并通过在浏览器中查看 PHP 脚本使其看起来像您想要的那样。

然后,如果您使用的是 Apache,请设置重写规则以重写 URL 以指向您的 PHP 脚本。

这是一个例子:

RewriteEngine On
RewriteRule ^/signatures/sig.png$ /signature.php [L]

这会将http://yoursite.com/signatures/sig.png 重写为http://yoursite.com/signature.php,这样用户就可以将该png URL 嵌入到他们的签名或网页中以显示您的图像。

最终您可以拥有多个签名并通过重写特殊参数(即/signature/1234.png 到signature.php?id=1234 或/signature/style1/1234.png 到signature.php?id=1234&style=style1)来重写您的网址。

【讨论】:

  • 在下面查看我的评论,这是非常有用的,如果它是我可能不得不考虑切换免费网络主机的唯一“简单”方式,你能推荐任何使用 apache 运行并且不要有庞大的网址(例如 mysite.stackoverflow.users.com)?
  • 我不确定是否免费,而且那里有很多网络主机,我真的无法推荐一个。对于初学者,您可以使用动态 dns 服务将域名指向您的互联网连接并托管您自己的 apache 服务器。但是,如果您仔细观察,您会发现许多便宜的网络主机,它们提供的不仅仅是您需要的一切,而且服务也很好。
  • 好的,非常感谢你们以及你们所有人的所有其他 cmets,我很感激!我会调查一下,希望它会像看起来一样容易解决!
【解决方案2】:

如果您在 apache 上托管,则可以使用 mod_rewrite。这是一个示例(未经测试):

RewriteEngine On
RewriteRule /signatures/([A-Za-z0-9])+\.png$ /signature.php?name=$1

这里有一个教程:http://www.easymodrewrite.com/ 更多信息:http://httpd.apache.org/docs/current/mod/mod_rewrite.html

【讨论】:

  • 我的虚拟主机不在 apache 上运行(afaik,如果你碰巧知道的话,该网站是 alwaysdata.net),有没有其他方法可以在不需要的情况下做到这一点,或者你能推荐一个没有运行 apache 的可怕庞大 URL 的免费虚拟主机吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 2013-02-20
  • 2015-04-13
相关资源
最近更新 更多