友達のプロフィールのいくつかの例を見るとpic_crop
、左、右、上、下の数字は、写真の全幅のパーセンテージのようです。たとえば、私のプロフィール写真は次の値を返します。
"width": 180,
"height": 161,
"left": 0.11466,
"top": 0.06897,
"right": 0.88534,
"bottom": 0.93103
Facebook のタイムラインを調べると、プロフィール写真が 160px の正方形で表示されています。Facebook は写真を表示するためにトリミングするのではなく、160 ピクセルの正方形のウィンドウの背後にあるトリミングされた領域に合わせてサイズを調整し、そのウィンドウの下に写真を配置して、トリミングされた写真が表示されるようにします。
top: 0.6897 と bottom: 0.93103 の「上」と「下」の値は、「垂直トリミングなし」と同等のようです。これは、私の写真や他の友人の写真にも見られます。したがって、0.93193 - 0.06897 = 0.86206 は、写真の高さの 100% が使用されることを意味します。(横クロップしない場合は左右同じ値になります。)
私の写真には水平方向の切り抜きがあります。私の写真の左と右の数字の場合、式は (右 - 左) ÷ (0.93103-0.06897) のようです。私の写真では、これは 0.89400 になります。したがって、160 × 180 / 161 = 179px × 0.89400 = 160px です。私は他のいくつかの友人の写真でこれを試しましたが、これは機能します。「右 - 左」を「上 - 下」に置き換えると、垂直方向の切り抜きのある写真でも機能するようです。
Facebook のタイムラインで、カバー写真の img タグが styled になっていますleft:-5.93%;
。左と右のクロップ量が同じなので、これは 9.5px になるはずです。9.5 / 160 = 5.93%。
非対称作物のスケーリングはまだ解明していません。
Facebookがこのように簡単にできるようになったら、きっと気に入るはずです!
アップデート
今夜の開発者のブログ投稿を読むだけで、トリミングされたプロフィール写真を取得する別の方法があります:profile_pic
テーブルです。
SELECT url, real_width, real_height FROM profile_pic
WHERE id = me()
AND width=160
AND height=160
返されたのurl
は、指定に従ってスケーリングされたプロフィール写真width
でありheight
、多かれ少なかれ、プロフィール所有者の意図に合わせてトリミングされています。