因為大多數虛擬主機都有流量限制(特別是博客主機),因此很多人都選擇把圖片儲存到 Flickr 和 Picasa 等免費相冊裡,再通過外鏈插入到文章裡。但由於這些網站經常被 block ,因此我建議大家還是盡量把圖片放到自己的服務器上。
由於我個人很懶,萬一博客搬家的話,過多的文章附件將會給文件的遷移帶來麻煩。因此我以 cosbeta 的 Pika 插件為藍本寫了一個遠程圖片代理程序,並對較多博客使用的 Picasa 、 Flickr 和 PhotoBucket 這三個圖床服務進行了防止鏈接被重置的處理。請點這裡下載腳本。
其實這個腳本和 pika 原理一樣,但由於我做了較多的修改,使用方法會有所差別。在使用之前,請確定你擁有符合要求的服務器服務器。
如果能滿足以上要求,那麼你就可以使用這個腳本了。
首先把腳本上傳到國外主機一個子域名的根目錄下,並把腳本裡的 $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的時候訪客也能看到圖片。
圖片通過此腳本調用一次後會緩存到服務器裡,第二次的調用則直接調用緩存。
我正在把這個腳本做成一個完整的 WordPress 插件,如果你發現這個腳本有不足的地方,請告訴我。
原文鏈接:http://blog.imbolo.com/php-get-image-from-remote-host/