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包含您想要的链接。
更长的答案:
- 使用oauth playground以交互方式查询用于picasa的Gdata api
- https://code.google.com/oauthplayground并从列表中选择picasa并获取
- 授权按钮…然后允许访问按钮,您可以使用表单查询api
- 查询所需照片的ENTRY URI(您的… user / .. / albumid .. / photoid)
- 检查媒体内容:组/媒体:内容[@url]示例如下
- 大照片的URI是上面表达式中的url属性的value
- 我的一张picasa照片的样本值
- 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;