Picasa 果然上不了了啊

Sunday, Aug 02 13:15, 2009
0 comments/575 hits
由于公司的网络是墙外的,所以,一直都不知道picasa上不了。上次有人说被GFWed了。还不以为是,结果真的这样了。

啊哈哈,这个世界,真的太搞笑了。
Author: gzguoer Categories: 西门吹血 Tags: PicasaGFW

Picasa外链的使用

Thursday, May 14 14:53, 2009
0 comments/446 hits
昨天一直怀疑的picasa外链的问题,原来是因为google为了防止技术不行的人使用滥用图片,所以增加了一些外链的难度,并且使得外链的图片大小收到限制,如下图所示:
img
原来要在外部链接使用宽度或者高度限定参数(上图中的尺寸指的是高度参数)来限制外链图的大小。参考google web albums的reference guide.
所以,对于原始的图片地址,比如http://*.ggpht.com/*/blogimg.jpg, 可以使用如下的两种方式外链:
  • http://*.ggpht.com/*/s512/blogimg.jpg
  • http://*.ggpht.com/*/blogimg.jpg?imgmax=512
我采用了第二种,因为简单嘛,哈哈。直接在原始链接后面加东西就行了。选择512是因为这个数字在我做图像处理的工作中非常熟悉,另外就是我的blog主体宽度是600px。所以选择512比较美观,哈哈。

另外,经过高人指点我的upload页面变得更加简单高效了。
@authorized.role("admin")
def post(self):
filename = self.request.get('imgfile')
filetitle = self.request.get('imgtitle')
file_handle = StringIO.StringIO(filename) #convert string to file-like object
gd_client = gdata.photos.service.PhotosService()
gd_client.email = 'gzguoer@gmail.com'
gd_client.password = bbpsw.getpassword()
gd_client.source = 'blowblood-upload-image'
gd_client.ProgrammaticLogin()
album_url = '/data/feed/api/user/gzguoer/albumid/5334765855583692065'
try:
photo = gd_client.InsertPhotoSimple(album_url, 'blogimg',filetitle,
file_handle, content_type='image/jpeg')
img_url = photo.GetMediaURL()+"?imgmax=512"
self.response.out.write('<script type="text/javascript">
window.parent.rteGetImage("%s")</script>' % img_url)
except gdata.service.RequestError:
self.response.out.write(GooglePhotosException)
上传完毕之后,直接调用该iframe他爹的javascript函数rteGetImage函数,并且把图片的外链url传输过去,哈哈,然后他爹页面把图片外链url做成一个img标签,嵌入到rich text editor的编辑区域中,并且关闭这个上传页面。哈哈,不错。下面再来一幅nb图像,看看我的摄影技术,哈哈。
img
Author: gzguoer Categories: mindcyclone Tags: PicasaExternal_link

实现图片上传到gogole picasa的步骤

Wednesday, May 13 18:09, 2009
2 comments/603 hits
要在app engine中使用google的picasa的上传服务,首先需要安装 Google Data Python Library包,步骤在此, 安装完毕后需要把src下的atom和gdata文件夹放到app的根目录。
然后,可以在python shell中使用python下耍耍这个功能。
这个时候遇到第一个问题:

def InsertPhotoSimple(self, album_or_uri, title, summary, filename_or_handle,
        content_type='image/jpeg', keywords=None)

如上语句里面的fielname_or_handle,人家说是一个A file-like object or file name where the image/video will be read from。可惜我不太会python,所以不知道是个啥玩意。后来发现,这个东东可以使本地文件的绝对路径,哈哈。太nb了,至今我还不能获得用户选择的文件的绝对路径。。
对于file类的input元素,javascipt获得的是文件名,服务器端使用request.get获得的是文件的内容。幸好后来偶然知道了StringIO这个东西,哈哈,就是把字符串伪装成文件的,也就是传说中的a file-like object,那么接下来的任务就很简单了。
首先使用form中的file input元素把文件的内容传送到服务器,服务器收到数据后使用StringIO把它转化为a file-like object,然后就可以使用InsertPhotoSimple函数把图片上传到picasa了。该函数返回上传后的文件的"句柄",我们根据这个“句柄”来得到图片的外联地址。代码如下所示(注意使用gdata.url来覆盖uanshi的http_request_handler):
import gdata.urlfetch
gdata.service.http_request_handler = gdata.urlfetch
#override original http handler
...
filename = self.request.get('imgfile')
filetitle = self.request.get('imgtitle')
file_handle = StringIO.StringIO(filename)#convert string to file-like object
gd_client = gdata.photos.service.PhotosService()
gd_client.email = 'gzguoer@gmail.com'
gd_client.password = bbpsw.getpassword()
gd_client.source = 'blowblood-upload-image'
gd_client.ProgrammaticLogin()
album_url = '/data/feed/api/user/gzguoer/albumid/5334765855583692065'
try:
photo = gd_client.InsertPhotoSimple(album_url, 'blogimg',filetitle,
file_handle,content_type='image/jpeg')
template_values = {
'imgtitle':'title',
'img_url':photo.GetMediaURL(),
'response':'upload_complelted,<a href="javascript:getimgurl()">use it</a>',
}
path = os.path.join(os.path.dirname(__file__), '../templates/upload.html')
self.response.out.write(template.render(path, template_values))
except gdata.service.RequestError:
self.response.out.write(GooglePhotosException)
*另外注意密码保护,由于本程序可以在google code上下载到,所以密码我保存到本机的bbpsw类中,然后定义一个方法getpassword得到密码,或许由更好的方法,但是我不想在每次上传图片的时候跳转到别的页面,所以还是采用这种方法了。 还遇到一个问题:就是图片上传完毕之后,服务器端不好触发客户端的javascript程序,所以我直接产生一个use it的超链接,触发javascript函数,把图片的地址做成img标签,然后加入到编辑页面中。如果不这么做,或许我需要ajax?我不想学那么多新东西啊。。。
P.S. 插入图片的iframe在/upload下可以看到(为了防止低级别坏人滥用,所以我没有写超连接。)上传之后的图片会出现在我的picasa相册的bbblog目录。
总结一下:通过学习做这个按钮,我学习了以下的东西:
form的使用
iframe的使用
google data服务
超多javascipt使用,这语言真的很强大,但是很难用。
夕阳西下,回家了,哈哈!!
Author: gzguoer Categories: mindcyclone Tags: BBBlogPicasaimage_upload

测试图片功能

Wednesday, May 13 17:08, 2009
0 comments/415 hits
哈哈,测试图片输入功能,应该可以用了,现在blog里的所有图片都可存储在我的google相册里面的bbblog目录下。
Image
啊?编辑状态下居然不能预览图片。。。这个不知道是哪里的问题,我直接使用别的网站的图片地址是可以用的,为什么在我的编辑器下不行呢?难道是我编辑的时候它正在下载吗?哈哈。这个有点搞笑了。下载速度这么慢。。。
不过好像不是啊,我把图片的地址换成别的,都是可以直接在编辑器里显示,而且我直接输入图片地址也是可以看到图片的,难道google的这玩意对自家兄弟的请求设置了某种不可告人的限制?
哦,现在突然好了,不知道是什么原因。。
再贴一副小的试试
http://lh5.ggpht.com/_0vQB3OwI7l4/SgqSnN7yQII/AAAAAAAAAOQ/NJKmhMnl_BQ/blogimg.jpg
看来还是不行啊,非得等半天。。。。
我用firebug查看了一下这个图片,赫然发现就可以显示出来了。难道真的是app engine对于google picasa的请求会被拒绝掉吗?这也太发指了吧。
Author: gzguoer Categories: mindcyclone Tags: PicasaRTEimage_upload