API:按方向获取Flickr照片

时间:2014-08-28 12:46:58

标签: api flickr

我只想从Flickr获取风景照片,但我没有看到任何可以让我这样做的参数。有没有人知道是否有办法?

2 个答案:

答案 0 :(得分:4)

flickr.photos.search功能的响应中,您可以指定一些可选参数,称为extras。对于您指定的每个网址(格式为url_s,url_q ...),您将获得以下信息。

示例JSON响应

{
    ...
    "photos": { 
        "page": 1, 
        "pages": "478", 
        "perpage": 2, 
        "total": "4775", 
        "photo": [
            { 
                ...
                "longitude": 0, "accuracy": 0, "context": 0, "media": "photo",
                "media_status": "ready",
                "url_q": "https:\/\/farm4.staticflickr.com\/0000\/000_000_q.jpg",
                "height_q": "150",
                "width_q": "150",
                ...
            },
            { 
                ...
                "longitude": 0, "accuracy": 0, "context": 0, "media": "photo",
                "media_status": "ready",
                "url_q": "https:\/\/farm4.staticflickr.com\/0000\/000_111_q.jpg",
                "height_q": "150",
                "width_q": "150",
                ...
            },
        ] }, 
        "stat": "ok" 
};

如果您想要Q尺寸照片的网址,您将拥有height_qwidth_q属性。如果width_q大于height_q,则方向为横向。如果相反,照片的方向是人像,否则它是一个完美的正方形。

在Javascript中,您可以编写如下函数:

function determinePhotoOrientation(width, height) {
    if (width > height) {
        return 'landscape';
    } else if (width < height) {
        return 'portrait';
    }
    return 'square';
}

如果您使用的是其他语言,则可以使用该语言制作类似的功能,以帮助您确定方向。

答案 1 :(得分:0)

我还想获得仅是“人像”或“风景”的结果。我打算使用@Dodzi所描述的技术(尽管不在q图像上),但是由于我的代码结构如何,我发现了flickr.photos.search端点似乎是隐藏的参数。

对我来说,将这些参数传递给端点只会导致返回与方向匹配的照片:

Array
(
    [per_page] => 100
    [extras] => url_sq,url_t,url_s,url_q,url_m,url_n,url_z,url_c,url_l,url_k,url_h,url_o,path_alias,owner_name,license
    [tag_mode] => all
    [tags] => 
    [license] => 1,2,3,4,5
    [sort] => interestingness-desc
    [orientation] => portrait
)

当我使用“横向”作为方向时,这对我也有效。