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

标签 python jpeg gdata-api picasa

我正在使用Python client library使用 Picasa 网络相册 API 将一些 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')

最佳答案

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

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

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

然后我突然意识到发生了什么。我正在使用 Google App Engine SDK 在本地计算机上对此进行测试,该计算机使用 T-Mobile 的移动宽带连接到互联网。当您下载图像时,T​​-Mobile 使用代理来压缩图像。对于我的 Firefox 浏览器,我使用扩展来修改 HTTP header ,以防止在浏览过程中出现这种压缩,但 urlfetch 当然不会执行此操作。

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

关于python - 通过 Picasa API 上传图片时如何防止 JPEG 压缩?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100001/

相关文章:

python - 如何使用 tkinter/python 检测在键盘/鼠标上按下了哪个键?

python - 为 matplotlib.pyplot 文本元素设置字体大小

python - 如何为非主日历插入新事件?使用 python gdata

ruby-on-rails - 将YouTube集成到Rails 3 App中的策略

javascript - 在浏览器中显示 .raw 文件图像

php - PHP Youtube API-获取洞察数据

python - 如何捕获pygame屏幕?

python - 理解 zip 函数

jpeg - 如何在以特定品质因数保存 Jpeg 文件之前估计其大小?

java - 我无法获得 ImageReaderByFormatName ("jpeg-lossless")