現在、ブロブストアを使用して画像のサムネイルを生成していますが、サムネイルのサイズをimg
タグに保存することをお勧めします。これは良い習慣であり、レンダリングを高速化し、部分的に読み込まれたページの見栄えを良くするのに役立ちます。
元の画像のサイズしかわからない場合、ブロブストアによって生成されたサムネイルのサイズを計算するにはどうすればよいですか?
私の以前の試みはあまり正確ではなく、ほとんどの場合、1 ピクセルか 2 ピクセルずれていました (おそらく丸めのため)。
サムネイルを取得し、画像 API を使用して寸法を確認するよりもうまくいくことは理解していますが、それは非効率的だと思います。
現時点で計算に使用するコードは次のとおりです。ただし、1 ピクセルずれている場合があり、ブラウザーが画像をわずかに引き伸ばして、アーティファクトのサイズを変更したり、パフォーマンスを低下させたりします。
from __future__ import division
def resized_size(original_width, original_height, width, height):
original_ratio = float(original_width) / float(original_height)
resize_ratio = float(width) / float(height)
if original_ratio >= resize_ratio:
return int(width), int(round(float(width) / float(original_ratio)))
else:
return int(round(float(original_ratio) * float(height))), int(height)
精度は非常に重要です。