GData.Photos查询中的全尺寸图像在哪里?

我正在查询Picasa图库,当我深入查看返回的条目时,我找不到完整尺寸的图像。 我只能看到一个更小,重新resize的图像( data[0].Content.AbsoluteUri )。 我知道Google会保留完整尺寸的图片,因为当我在线查看我的Picasa图库时,我可以看到它。 全尺寸图片在哪里?

 var picasaService = new PicasaService("Gallery"); var photoQuery = new PhotoQuery(PicasaQuery.CreatePicasaUri("GOOGLEUSERNAME", "GALLERYID")); var photoFeed = picasaService.Query(photoQuery); var data = photoFeed.Entries; 

简短回答:

media:group / media:查询中的内容[@url]路径以获取gdata照片来自picasa GData服务的ENTRY包含您想要的链接。

更长的答案:

  1. 使用oauth playground以交互方式查询用于picasa的Gdata api
  2. https://code.google.com/oauthplayground并从列表中选择picasa并获取
  3. 授权按钮…然后允许访问按钮,您可以使用表单查询api
  4. 查询所需照片的ENTRY URI(您的… user / .. / albumid .. / photoid)
  5. 检查媒体内容:组/媒体:内容[@url]示例如下
  6. 大照片的URI是上面表达式中的url属性的value
  7. 我的一张picasa照片的样本值
  8. URL = HTTPS://lh3.googleusercontent.com/-_FFMNGPU1TQ/TtukXyN4eCI/AAAAAAAACso/EzPmut2iKVQ/DSC01612.JPG

使用oauth 2.0操场进行查询以获取我的一张照片的输入…

 Request: GET /data/entry/api/user/rowntreerob/albumid/5682316071017984417/photoid/5682316083381958690?alt=json 

注意:使用http://json.parser.online.fr/过滤响应

 Response: "media$group":{ "media$content":[ { "url":"http://sofzh.miximages.com/c%23/DSC01612.JPG", "height":512, "width":341, "type":"image/jpeg", "medium":"image" } 

您想要的大照片的链接位于上面的url属性中…

使用“fields =”标签,您可以直接从gdata获取下面的req / resp链接…

 GET /data/entry/api/user/rowntreerob/albumid/5682316071017984417/photoid/5682316083381958690?alt=json&fields=media%3Agroup%2Fmedia%3Acontent%5B%40url%5D { "version":"1.0", "encoding":"UTF-8", "entry":{ "xmlns":"http://www.w3.org/2005/Atom", "xmlns$media":"http://search.yahoo.com/mrss/", "media$group":{ "media$content":[ { "url":"http://sofzh.miximages.com/c%23/DSC01612.JPG", "height":512, "width":341, "type":"image/jpeg", "medium":"image" } ] } } } 

隐藏在文档中,可以指定Feed中图像的大小。 这是使用“imgmax”参数:

https://developers.google.com/picasa-web/docs/2.0/reference#Parameters

可以将值设置为“d”以请求完整大小的图像

这不是直接在c#API中支持的,但您可以使用PhotoQuery对象上的“extraParameters”字段来实现所需的结果。

然后你的代码变成:

 var picasaService = new PicasaService("Gallery"); var photoQuery = new PhotoQuery(PicasaQuery.CreatePicasaUri("GOOGLEUSERNAME", "GALLERYID")); // add the extra parameter to request full size images photoQuery.ExtraParameters = "imgmax=d"; var photoFeed = picasaService.Query(photoQuery); var data = photoFeed.Entries;