Discourse pierde los píxeles superior/inferior al generar miniaturas

Cuando adjuntas imágenes a una publicación, Discourse las redimensiona para crear miniaturas adecuadas para su visualización.

Parece haber un error en este proceso que hace que siempre se pierdan las filas superior e inferior de píxeles.

Esto no es un gran problema, pero hace que los elementos con bordes finos se vean extraños. (Por ejemplo, la mayoría de las capturas de pantalla de software de Windows 10 se ven incorrectas porque el borde inferior de la ventana no aparece.)

Observaciones:

  • No parece deberse a la relación de aspecto, así que no creo que sea el recorte intencional de imágenes muy anchas o altas; parece un error.

  • He verificado que los píxeles faltan en el recurso de la imagen miniatura en sí. Por lo tanto, esto ocurre cuando se genera la miniatura en el backend, no cuando el navegador la muestra.

  • Edición: Acabo de notar que los píxeles superior e inferior no desaparecen por completo, sino que están tan mezclados/desvanecidos que podrían considerarse perdidos. ¿Quizás tenga que ver con cómo el algoritmo de redimensionamiento maneja los bordes de la imagen? Nunca parece ocurrir en los bordes izquierdo y derecho, por ejemplo, en capturas de pantalla con relación de aspecto vertical.

  • Cuando haces clic para ver la imagen en tamaño completo, esta se muestra correctamente, al menos.

Espero que esta imagen de ejemplo reproduzca el problema aquí en el foro de Discourse:

Debería ser una imagen blanca con un borde rojo de 1 píxel en todos los lados. Si el problema ocurre aquí, solo verás los bordes izquierdo y derecho hasta que hagas clic para ver la imagen en tamaño completo.

(Edición: De hecho, parece ocurrir aquí.)

En caso de que no ocurra, este es el resultado que veo en mi propio foro:

Al probar esto, debes esperar un poco después de publicar (y a veces actualizar el hilo) para que ocurra, ya que la generación de la miniatura en el servidor tarda unos segundos después de publicar.

4 Me gusta

Sí, también lo he notado desde hace bastante tiempo. No estoy seguro de qué se puede hacer al respecto.

1 me gusta

Interesante, veo la parte superior, izquierda y derecha, pero no la inferior.

chrome://gpu
Versión de Chrome Chrome/87.0.4280.141
Sistema operativo Windows NT 10.0.19042
GL_RENDERER ANGLE (Intel(R) HD Graphics 620 Direct3D11 vs_5_0 ps_5_0)
1 me gusta

Me pregunto si depende del tamaño de la pantalla, sirviendo diferentes recursos a distintos clientes.

Tras echar un vistazo rápido al post/imagen de arriba mediante F12, encontré dos recursos, además de la imagen original:

  • Imagen original (1416 x 946) /original/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289.png, que permanece intacta. URL directa

  • Versión más pequeña (1380 x 920) optimized/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289_2_1380x920.png, que tiene bordes superior e inferior casi invisibles. URL directa

  • Versión aún más pequeña (640x460) optimized/3X/e/2/e2c5f032e18fa374c0593af71cf25d3499826289_2_690x460.png, que no tiene borde inferior en absoluto, pero sí los bordes izquierdo, superior y derecho. URL directa

Podría haber algunos argumentos de ImageMagick para ajustar el algoritmo de escalado y cómo maneja los píxeles en los bordes, aunque cualquier cambio, por supuesto, podría empeorar otras situaciones mientras mejora esta.

1 me gusta

Sí, esa es también mi opinión. Es un problema del algoritmo de escalado. Mientras se preserve la versión original, no veo un problema grave aquí, así que lo estoy moviendo a solicitud de característica.

4 Me gusta