如何通过Picasa API上传图片时阻止JPEG压缩?

时间:2010-01-20 08:40:48

标签: python jpeg gdata-api picasa

我正在使用Picasa网络相册API的Python client library将一些JPEG图像上传到相册。但是上传后照片看起来非常压缩。在Picasa 3.6中,可以选择以原始质量上传图像而不进行任何压缩,但是我可以在API中使用类似的选项吗?

这是我用来制作照片并将其插入相册的一些代码:

upload_photo = gdata.photos.PhotoEntry()
upload_photo.summary = atom.Summary(text=title)
upload_photo.title = atom.Title(text=file_name)
upload_photo.text = atom.Text(text='Test')
upload_photo.author = atom.Author(atom.Name(text='Test Author'))
upload_photo.timestamp = gdata.photos.Timestamp(text='%i' % 
  int(time.mktime(photo_date.timetuple()) * 1000))
upload_photo.geo = gdata.geo.Where()
upload_photo.geo.Point = gdata.geo.Point()
upload_photo.geo.Point.pos = gdata.geo.Pos(text='%f %f' % (lat, lon))

imgContent = StringIO.StringIO(urlfetch.fetch('http://url.com/image1.jpg').content)

gpclient.InsertPhoto(album_or_uri=album_url, photo=upload_photo,   
  filename_or_handle=imgContent, content_type='image/jpeg')

1 个答案:

答案 0 :(得分:3)

我自己设法解决了这个问题,结果却是一个奇怪的问题: - )

我在Google网上询问了Picasa数据API,并且有人说在上传新图片时API没有进行任何压缩。这让我看到了其他代码,即urlfetch

事实证明urlfetch正在获取压缩的JPEG图像。但为什么?有没有我忘记设置的参数?我查看了文档,但没有找到任何限制。

然后我突然意识到发生了什么。我使用Google App Engine SDK在我的本地计算机上测试了这个,它使用T-Mobile的移动宽带连接到互联网。 T-Mobile使用代理在下载图像时压缩图像。对于我的Firefox浏览器,我使用扩展来修改HTTP标头以防止在浏览过程中出现这种压缩,但当然urlfetch没有这样做。

更改后,它会下载原始质量的JPEG并将其上传到Picasa,没有任何问题。