1

我正在使用 Picasa 网络相册 API 的 Python客户端库将一些 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')
4

1 回答 1

3

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

我在 Google Group 上询问了 Picasa 数据 API,那里的人说 API 在上传新图像时不会进行任何压缩。这导致我查看其他代码,即urlfetch.

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

然后我突然明白发生了什么事。我正在使用 Google App Engine SDK 在我的本地机器上对此进行测试,该 SDK 使用 T-Mobile 的移动宽带连接到互联网。当您下载图像时,T​​-Mobile 使用代理来压缩图像。对于我的 Firefox 浏览器,我使用扩展来修改 HTTP 标头以防止在浏览期间进行这种压缩,但当然urlfetch没有这样做。

更改此设置后,它正在下载原始质量的 JPEG 并将其上传到 Picasa 没有问题。

于 2010-01-23T18:24:07.907 回答