PHP 获取远程图片:远程图片代理程序

因为大多数虚拟主机都有流量限制(特别是博客主机),因此很多人都选择把图片储存到 Flickr 和 Picasa 等免费相册里,再通过外链插入到文章里。但由于这些网站经常被 block ,因此我建议大家还是尽量把图片放到自己的服务器上。

由于我个人很懒,万一博客搬家的话,过多的文章附件将会给文件的迁移带来麻烦。因此我以 cosbeta 的 Pika 插件为蓝本写了一个远程图片代理程序,并对较多博客使用的 Picasa 、 Flickr 和 PhotoBucket 这三个图床服务进行了防止链接被重置的处理。请点这里下载脚本。

使用方法

其实这个脚本和 pika 原理一样,但由于我做了较多的修改,使用方法会有所差别。在使用之前,请确定你拥有符合要求的服务器服务器。

  • 一个流量较大的国外php主机
  • 服务器支持curl函数

如果能满足以上要求,那么你就可以使用这个脚本了。

首先把脚本上传到国外主机一个子域名的根目录下,并把脚本里的 $allow_referer 添加允许调用图片的域名,必须包含此脚本所在的域名和你博客所在的域名,否则图片就无法在你博客显示。

如果你要调用的图片是 Picasa 、 Flickr 和 PhotoBucket 以外的图床,则使用以下的代码(yourdomain是脚本所在的域名):

<img src="http://yourdomain/index.php?img=http://image_url" />

如果你调用的是 Picasa 的图片,则使用以下的代码( image_url 是 “ggpht.com/” 后面的部分,lh* 是图片外链地址的第一节,也就是服务器编号):

<img src="http://yourdomain/index.php?img=http://image_url&host=lh*" />

调用 Flickr 和 PhotoBucket 的图片也差不多,把 host 参数改为 farm* (Flickr)和 i**** (PhotoBucket)就可以。之所以把这几个图床的调用方法弄得这么麻烦,是因为这几个图床被block的风险比较大,只要调用这几个网站的图片时链接里不出现这几个网站域名,图片链接就不会被重置,从而当这几个网站被block的时候访客也能看到图片。

图片通过此脚本调用一次后会缓存到服务器里,第二次的调用则直接调用缓存。

PS

我正在把这个脚本做成一个完整的 WordPress 插件,如果你发现这个脚本有不足的地方,请告诉我。

原文链接:http://blog.imbolo.com/php-get-image-from-remote-host/

转载请注明:代码家园 » PHP 获取远程图片:远程图片代理程序

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)