2010-01-20 80 views
1

我使用Picasa網絡相冊API的Python client library將一些JPEG圖像上傳到相冊。但是一旦上傳,照片顯得非常緊湊。在Picasa 3.6中,可以選擇以原始質量上傳圖像而不進行任何壓縮,但是我可以在API中使用類似的選項嗎?如何通過Picasa API上傳圖片時防止JPEG壓縮?

這是一些我用它來創建照片,並將其插入專輯代碼:

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') 

回答

3

我設法解決這個問題我自己,它原來是一個奇怪的一個:-)

我在Google Group上詢問了有關Picasa數據API的內容,並且有人說在上傳新圖片時API不進行任何壓縮。這讓我看到了另一個代碼,即urlfetch。原來,urlfetch得到壓縮的JPEG圖像。但爲什麼?有沒有我忘記設置的參數?我瀏覽了文檔並找不到任何限制。

然後它突然明白了我發生了什麼事。我正在使用Google App Engine SDK在我的本地機器上測試此應用,該應用使用T-Mobile的移動寬帶連接到互聯網。而T-Mobile使用代理在下載時壓縮圖像。對於我的Firefox瀏覽器,我使用擴展名來修改HTTP標頭以防止在瀏覽期間進行壓縮,但當然urlfetch沒有這樣做。

更改此設置後,它將下載原始質量的JPEG並將其上傳到Picasa中,沒有任何問題。