通过带有偏移裁剪的图形api访问全尺寸(851x315)时间轴封面照片

时间:2014-08-22 14:30:56

标签: facebook api photo cover

这是https://stackoverflow.com/a/21074207/3269910

的连续问题

解决方案似乎很好c0.0.851.315

但是c0.0值指向图像的0x0位置

我想要的是具有offset_y的图像。如果是offset_y:20,

即,我想要相同尺寸和部分图像,我在api通话中的页面时间轴中看到的内容。

是否可以这样做?

注意:如果我将零值更改为c0.0,那么它指向像素,但offset_y是%我认为。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我与Facebook平台小组进行了讨论;

他们尚未准备好向我们分享手动计算。

是的,可以使用API​​ offset_y值手动计算c0.XXXX的值。

这是我的PHP代码。

$fb_page_cover_json  =  json_decode( file_get_contents( 'https://graph.facebook.com/11111111?fields=cover'));

$fb_cover_image_url = $fb_page_cover_json->cover->source;

$image_info = getimagesize($fb_cover_image_url);
$image_width = $image_info[0];
$image_height = $image_info[1];                 

echo getTop($fb_page_cover_json->cover->offset_y,$image_width,$image_height);


function getTop($offset_y,$image_width,$image_height) {
    $cover_w = 851;
    $cover_h = 315;
    $img_w = $image_width;
    $img_h = $image_height;
    $real_img_h = ($cover_w * $img_h / $img_w) - $cover_h;
    $result = ($real_img_h * $offset_y / 100 * -1);

    return floor($result);
}

方法getTop将返回c0.XXX值。

希望这对某人有所帮助。