Pregunta

Estoy creando una red social donde los usuarios suben su imagen de perfil.

Esta imagen se utilizará en su página de perfil en 150/150 px dimensión.

En la página de inicio, i.e feed Activity Feed necesito que la misma imagen sea en 75/75 px.

¿Cuál sería la mejor práctica para hacer esto

  1. Cambiar el tamaño de la imagen en la mosca (Timthumb).
  2. Cambiar el tamaño y guardar la imagen en el servidor.
¿Fue útil?

Solución

Mientras se cargan una foto crea un conjunto de miniaturas requeridas y ahorre como un [Image_Name] thumb [size_name] .jpg o también:

uploaded: file.jpg
medium: file_thumb_150x150.jpg
small: file_thumb_75x75.jpg

Convención de nombres depende de usted, pero de manera rápida, puede acceder fácilmente a los datos que necesita.No es necesario usar el servidor para generarlo en la mosca o escala en un navegador.

Otros consejos

He estado trabajando en este problema por un rato y he encontrado 3 formas principales de hacer esto:

  1. Generar imágenes en miniatura en el punto de subir como proceso de fondo.
  2. generar imágenes a pedido a través de la aplicación principal
  3. generar imágenes a pedido utilizando la URL como una API

    Cada enfoque tiene sus pros y sus contras.

    1. Este enfoque es el más restrictivo, debe conocer todos los usos y tamaños de miniaturas por adelantado para que pueda generarlas inmediatamente después de la carga. La principal ventaja es que las imágenes se pueden servir de manera eficiente utilizando un servidor como NGINX y son como cualquier otro recursos estáticos.
    2. Django tiene una biblioteca llamada Sorl-minhumbnail que proporciona una etiqueta de plantilla para generar miniaturas de todo tipo y cuando sean necesarios. Utiliza una tecla / un almacén de valor rápido para realizar un seguimiento de las miniaturas se han generado, e invalida automáticamente las imágenes generadas en peligro si detecta la imagen de origen. La etiqueta de la plantilla luego devuelve la URL para la imagen generada, que se puede servir directamente desde Nginx sin pasar por una capa de scripting. Más flexible que 1, pero no puede (por ejemplo) generar una URL de imagen con JavaScript y esperar que exista, debe realizarse por el código o plantillas de backend.
    3. Totalmente dinámico y flexible, puede obtener cualquier versión de la imagen que desee simplemente ajustando la URL, Amazon usa este método al igual que todos esos sitios web de generación de imágenes de marcador de posición. Puede generar URL en JavaScript y hacer lo que quieras. El sitio web en sí no necesita ningún conocimiento de la capa de miniatura corta de quizás algunos métodos de ayuda para generar las URL para usted. Pero, esto es obviamente la forma más interesante de las cosas y debe asegurarse de que su arquitectura pueda manejar la carga. Debe usar cada truco en el libro para invalidar los cachés de manera oportuna, evite los hits innecesarios en el script de cambio de tamaño, etc.

      Soy un gran fan de la tercera forma de hacer las cosas, me gusta la generación de imágenes para estar completamente aislada de mi funcionalidad principal del sitio web y me gusta la considerable flexibilidad, pero necesitas saber lo que estás haciendo cuando se trata de para configurar sus servidores para manejarlo.

te digo lo que hago.Por lo tanto, por sus vías almacenamos la imagen de tamaño completo, pero cambiándolo de usando la ID de DB con los principales ceros.En el primer uso, creo la miniatura y la guarde en otra carpeta, usándola en las siguientes llamadas.

Si el espacio del servidor y el ancho de banda son un problema, debe considerar usar un CDN.

Amazon tiene una buen servicio,

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top