Actualmente estoy usando blobstore para generar miniaturas para imágenes, sin embargo, me gusta almacenar las dimensiones de la miniatura en la etiqueta img
, como es una buena práctica y ayuda a acelerar el procesamiento y hace que una página cargada parcialmente se vea un poco más agradable.App Engine: Cálculo de las dimensiones de las miniaturas que se generarán al publicar miniaturas de blobstore
¿Cómo puedo calcular las dimensiones de una miniatura generada por la librería de blob, conociendo solo las dimensiones de la imagen original?
Mis intentos anteriores no han sido muy precisos, la mayoría de las veces están desactivadas por un píxel o dos (probablemente debido al redondeo).
Entiendo que ir a la miniatura y usar la API de imágenes para verificar las dimensiones funcionaría, pero creo que es ineficiente.
Aquí está el código que uso para calcularlo en este momento, sin embargo, ocasionalmente está desactivado en un píxel, lo que hace que el navegador estire ligeramente la imagen, causando que cambie el tamaño de los artefactos y sea menos eficiente.
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)
¡La precisión es muy importante!
¡Buena pregunta!¿Qué fórmula intentó y en qué situaciones estaba mal? –
@systempuntoout, no los estoy generando, la API de publicación de imágenes de Google sí lo está, y no proporciona dimensiones. @Nick Johnson, actualicé mi pregunta con el código que estoy usando actualmente. –