不用插件解决Picasa图片不能显示的方法
Picasa死掉有一段时间了,像我这种拿它当博客图床的人来说真是无比郁闷。图片搬迁太麻烦了,不过Wordpress用户可以使用江东老板的Pika插件来恢复Picasa的显示。现在Sivan再教大家一种不用插件的方法恢复图片的显示,任何程序和页面都能用,而且不需要国外主机。
跟恢复Twitter的JS挂件一样,这次还是用到Google AppEngine搭建的代理。由于代理图片是个极耗流量的事,所以强烈建议大家自己搭建一个代理。教程参考《五步搭建属于自己的代理服务器》,已经没法再简单了。目前Google AppEngine貌似已经缩水,免费帐户每天只能使用1G流量,所以我重新申请了一个专门给自己博客用。
接下来就很简单了,因为mirrorrr代理访问不加密地址。我们只要把代理地址加到原来外链图片的前面就OK了。为了不去修改每个图片的地址,我们采用jQuery在页面载入时修改地址。
首先需要载入jQuery库,主题载入过的就不用重复加载了:
接下来在后面插入一段jQuery代码,如下:
$(".post p img").each(function(sivanimg){
var src = $(this).attr("src");
if( src.indexOf('ggpht')!=-1 ){
$(this).attr('src','https://你的账户名.appspot.com/'+src.replace('http://','') );
}
});
这个代码是从pika的全局代码改的。这里的选择器我用的“.post p img”,每个主题是不一样的。如果你只在文章中使用picasa图片那么使用“img”就可以了。对主题不熟悉的建议用后者。然后会遍历页内所有图片并获取其地址,当地址来自picasa时则使用mirrorrr加载,就这么简单。
如果你用了highslide等特效连链接也需要该的话,再追加以下jQuery代码:
$(".post p a").each(function(sivana){
var href = $(this).attr("href");
if( href.indexOf('ggpht')!=-1 ){
$(this).attr('href','https://你的账户名.appspot.com/'+href.replace('http://','') );
}
});
这样就全部完事了,刷新博客看看效果吧。该方法不只针对wordpress,所有程序或页面都有效,适合没有国外主机而且不是用wp的朋友。同时该方法可以用来实现通过代理加载任何打不开的图片,而且能多相册一并处理。等Flickr被挡时兴许还用的上。
本文的宗旨只是教大家让博客的贴图正常显示,没有其他目的,也请大家冷静对待类似事件。
p.s.由于该方法还是会暴露图片的外链地址,所以是否会引起“功夫网”注意我不敢打保票,现在只能亲自体验。
Tags : Google Picasa, jQuery, 相册
热泪盈眶。。
2009-09-03 06:45 | #1好家伙,你可真厉害..
2009-09-03 17:22 | #2问一下,是不是貌似这种方法可以盗链。。。- -
@新闻博客 , 可以。本来相册的图片就不能防盗链的。
2009-09-03 19:15 | #3这个办法好……不过AppEngine自己也越来越危险了……
2009-09-03 18:23 | #4@Betty , 现在APPENGINE免费只有1G流量,应该成不了什么大规模。需要大流量就买VIP的了
2009-09-03 19:16 | #5哈,方法不错。不过还不是根本啊。可惜
2009-09-06 15:41 | #6含泪等待Picasa归来
2009-09-09 21:22 | #7这堵墙,让人闷得慌
2009-09-11 00:33 | #8这个方法在Rss输出的时候,会无效吧?
2009-09-18 13:27 | #9嗯,RSS要想正常显示只能换相册了~
2009-09-18 16:55 | #10@Sivan , pika在RSS输出是可以正常显示图片的。所以如果结合pika和这个方法,兴许有一个新的思路。
2009-11-03 19:38 | #11不知道为什么我没看到效果呢...pika也有的图没缓存到服务器上==
2009-09-20 12:27 | #12这个办法跟pika差不多,都是用自动修改原地址为代理的地址。pika怎么缓存我就不清楚了~现在我博客用的是文中这个方法。
2009-09-20 12:39 | #13