使用 PHP 保存随机图像

Posted

技术标签:

【中文标题】使用 PHP 保存随机图像【英文标题】:Save Random Image with PHP 【发布时间】:2013-08-20 14:04:09 【问题描述】:

我需要将随机图像从网站保存到我的计算机。我知道如何使用 php 保存图像(我使用 curl),但我无法正确保存随机(动态)图像。

假设网站 (somesite.com) 有一些文本内容和 IMG 标签,看起来像 <img src='somesite.com/image.php'> 并显示随机图像。如果我使用浏览器,我只需右键单击并选择“保存图像”,这样我在屏幕上看到的图像就会被保存(它们都是一样的)。

但是,如果我使用 curl 打开 somesite.com(因为我还需要获取图像描述),然后再次使用 curl 打开 somesite.com/image.php,图像会有所不同(因为随机一个是每次用户请求 image.php 时选择)。

简单地说,如果 somesite.com 有文本“这是玫瑰”,image.php 将显示一朵玫瑰,并且在浏览器上一切都会正常显示。但是如果我使用 curl 打开网站,它可能有文本“这是郁金香”,当我请求 image.php 保存该图像时,将显示另一个图像。如何获得与发送第一个请求时显示的完全相同的图像?

我猜它应该被缓存在某个地方,或者什么?

【问题讨论】:

【参考方案1】:

它不会缓存在您最有可能到达的任何地方。最好的方法是将随机化放入调用文件中,例如<img src='somesite.com/image.php?data=<?php echo $someRandomValue; ?>'>。然后,每次使用相同的数据参数请求此图像时,您将使用此数据参数生成相同的图像。当然:如果有多个变量会影响图像,你可以在 url 中添加更多参数,或者简单地将它们放在一个数组中并通过 base64 编码传递。

【讨论】:

是的,我可以使用 PHP 完美地保存此类图像(使用 URL 中的变量),但并非所有网站都使用 URL 中的变量。 我误会了。如果您正在查看的不是您自己的站点,并且您使用 PHP 从其他站点获取随机图像,则只有在您自己实际缓存图像时才能执行此操作。我想,最简单的方法是通过您自己的 PHP 脚本查看该站点,方法是获取内容并在其中找到 <img> 标记后回显它们,下载相关图片并缓存它们。然后,您可以将 标记替换为其缓存的对应项。最后,您需要将 url 存储到数据库或其他东西中的本地文件名转换。 是的,我可以回显内容,但我如何实际存储(下载)显示的图像?如果我请求该文件,则会显示另一个随机图像。 立即下载图片并保存。然后在您也下载到本地图像而不是服务器上的动态图像的 html 中更改它的所有引用。这样,您查看的图像将与您的服务器存储的图像相同,但是是的,这确实意味着您的 PHP 脚本必须充当某种代理。 杰罗恩,我该怎么做?有什么简单的例子吗?我不太确定我是否明白这个想法。

以上是关于使用 PHP 保存随机图像的主要内容,如果未能解决你的问题,请参考以下文章

使用PHP从目录中随机生成图像

android studio:需要加载随机图像和顶部随机文本,然后将它们保存为 jpeg 以与其他应用程序共享

PHP从文件夹中提取随机图像

PHP PHP - 随机图像

PHP 在PHP中显示随机图像

PHP PHP随机图像