ネストされたifステートメントの束でこれを実行できることはわかっていますが、もっとエレガントな方法があるように感じずにはいられません。それは本当に数学の問題だと思いますが、実際にあるのであれば、私はpythonicの答えに興味があります。
任意のサイズ/アスペクト比の画像があります。
最小55wx168hをカバーするように、スケールアップまたはスケールダウンする必要があります
ここでの複雑さは、画像が収まる正方形の一辺の長さを指定する単一の値のみをとる関数によってスケーリングする必要があることです。
たとえば、サイズが1000w x 500hの画像があり、それを200に拡大縮小すると、結果の画像は一辺が200の正方形の内側に収まる必要があります。つまり、結果の画像は200wx100hになります。
逆に、画像が200x1000で、200に拡大縮小すると、40x200になります。
したがって、1000x500の画像を55x168をカバーするように拡大縮小するには、画像を336に拡大縮小する必要があります。これは、336x336の側面の正方形内に収まる最大の画像であるため、336x168のサイズになります。
また、200x1000の画像を55x168をカバーするように拡大縮小するには、画像を275に拡大縮小し、最終的に55x275にする必要があります。
うまくいけば、これは泥よりも明確です!アイデアをありがとう。
正当化:正方形の辺の値を使用してスケーリングする理由に関心がある場合は、これがPicasaがURLインジェクションを介して画像をスケーリングする方法です。たとえば、次の2つのURLを使用します。
- https://lh3.googleusercontent.com/-rvkbjZgBMDs/UEHYD3VmGVI/AAAAAAAADwM/UekknfI838s/s150/IMG_20120901_172419.jpg
- https://lh6.googleusercontent.com/-6BHPw9kYIQc/UEHYBS5z-dI/AAAAAAAADwA/QkEWF3H797A/s150/IMG_20120901_172405.jpg
両方にURLコンポーネントがあることに注意してくださいs150
。ただし、一方の画像は150x112で、もう一方の画像は112x150です。150は、これらの画像が両方とも収まる正方形の値です。