Esta función ya está disponible para pruebas aquí en Meta. Cargar una imagen aquí activará un redimensionamiento/codificación en el navegador del usuario antes de que se envíe al servidor.
Por favor, pruébalo, en este tema o en tu propia comunidad, habilitando la configuración del sitio “composer media optimization image enabled”. La dejamos desactivada por defecto mientras la probamos.
Para ilustrar las diferencias, aquí tienes un antes/después:
Un pequeño detalle sobre el medidor de porcentaje de carga. Al subir esta imagen HEIC de 6,1 MB, noté que avanzaba hasta el 100% relativamente rápido, pero luego se quedaba ahí durante unos 50 segundos antes de completarse. Eso podría causar confusión o que el usuario cancele la operación.
Esto es increíble. Una pregunta rápida, quizás obvia: ¿sería posible activarlo solo para imágenes superiores al límite del sitio? De este modo, las imágenes hasta el límite no se procesarían, pero si alguien intenta superar ese límite, aparentemente se reduciría su escala.
No has probado esta nueva función, ya que no funciona con imágenes HEIF ingeridas. Quería trabajar con HEIF, pero el soporte del navegador para decodificarlo es inexistente HEIF/HEIC image format | Can I use... Support tables for HTML5, CSS3, etc. Por lo tanto, has probado la conversión de HEIF en el servidor que ya lleva funcionando bastante tiempo.
Podría hacer que funcione enviando un decodificador WebAssembly, pero esas imágenes son tan raras que no consideré necesario hacerlo, ya que ya contamos con la conversión en el servidor en la que trabajó @pmusaraj.
Por ahora, esta función puede ingerir JPG, PNG y GIF. Puedo agregar fácilmente soporte para AVIF/JPEGXL/TIFF y lo haré pronto.
¡Sí! Ajusta composer media optimization image kilobytes optimization threshold al valor deseado.
No, no lo hará. Este trabajo ocurre en el navegador del usuario, justo antes de la subida. La reconstrucción (rebake) es un proceso del lado del servidor, por lo que son bastante diferentes.
(Una foto de 28 MB que tomé desde el centro de mi ciudad durante el primer confinamiento en 2020)
Probé la subida con varias velocidades de conexión, desde 1 Gbps hasta 1 Mbps. Funcionó bien, excepto con el ancho de banda de 1 Mbps. El comportamiento de la subida en este último fue un poco extraño.
Se quedó pegado al 0% durante mucho tiempo, luego el porcentaje aumentó rápidamente (más rápido de lo que subiría una conexión de 1 Mbps), después se quedó pegado al 100% durante un largo tiempo antes de mostrar este mensaje:
Si cancelamos el mensaje y descartamos el borrador mientras se estaba subiendo una imagen, y luego queremos publicar una nueva respuesta, la barra de progreso de carga sigue apareciendo en el editor:
Tenemos que recargar la página para que desaparezca.
Es un poco confuso para el usuario que el sitio permita enviar y mostrar una imagen de 50 MB, pero cuando intento enviar una imagen de 21600×21600 y 108 MB (desde aquí), obtengo este mensaje:
La confusión radica en que se prohíben las imágenes de más de 4 MB, pero al mismo tiempo se permiten imágenes de más de 50 MB.
¿Cuál es la razón real por la que no puedo subir esta imagen?
¡Qué foto tan genial! ¡Pasar de 28 MB a 113 KB es una relación bastante buena!
Así que esta nueva característica solo cambia la fase de «pre-subida». Interceptamos el archivo que intentas subir, le aplicamos transformaciones y luego sustituimos el archivo nuevo y más pequeño para reanudar el proceso de subida original.
Se mantiene en 0% y muestra «Procesando…» en la fase de pre-subida, así que eso es esperado. Intentaré también cambiar la cadena «Subiendo…» en la parte inferior.
Los 4 MB siguen estando prohibidos; el truco es que optimizamos la imagen para que sea > 4 MB cuando sea posible, de modo que pueda superar la limitación de tamaño de archivo.
Probé algunas imágenes de ese sitio, pero todas usan opacidad PNG, por lo que no puedo convertirlas de forma segura a JPG y el optimizador se detiene.
Probé un PNG de 60 MB ahora, y el optimizador puede manejarlo, pero usa más de 4 GB de RAM para terminar con un JPG de 360 KB.
¿Qué dispositivo, navegador y versión del sistema operativo estabas usando en esta prueba?
He comenzado a usar la optimización de imágenes de Composer. He notado que si quiero subir más fotos, el botón de responder se activa después de subir la primera imagen y solo se desactiva cuando finaliza la optimización de la siguiente imagen. Si hago clic en el botón de responder en ese momento, las otras subidas de imágenes se quedan colgadas y solo se compone el texto (procesando). No puedo reproducirlo aquí porque en Meta el botón cambia rápidamente, pero en mi sitio se queda colgado la mayoría de las veces durante unos 10 segundos o más entre subidas. Uso la configuración predeterminada y 3 imágenes de aproximadamente 3-4 MB.
Lo probé con un Huawei P20 Pro, Android 10 (Chrome 91.0.4472.120) en la aplicación web.
Como se ve en el video, después de las subidas (Feltöltés), el botón de responder se activa. Cada imagen tiene aproximadamente 2,3 MB.
¿Sería posible desactivar el botón de responder todo el tiempo mientras se suben las imágenes?
Estoy confundido con esta configuración. ¿Es correcto que diga “kilobytes”?
¡Gracias por el informe! Hubo un error al calcular el estado desactivado del botón:
Sí, Kilobyte - Wikipedia. Por defecto es la mitad de un megabyte, pero puedes ajustarlo según necesites. Recomiendo configurarlo lo más bajo posible, alrededor de ~300 KB, si quieres ahorrar la mayor cantidad de espacio.
Ya veo. Solo pensé que era un error al escribir “bytes” en lugar de “kilobytes”. Porque puse 524288 kb en el convertidor y marcaba 512 MB. Por eso me confundí. Pero sí, ahora lo entiendo. Gracias.
Tengo una pregunta sobre las cargas desde móviles. Cuando subo una imagen desde el móvil, no se redimensiona al ancho de píxeles objetivo. Creo que solo cambia la calidad. Si lo intento en un PC de escritorio, el redimensionado funciona. ¿Me he perdido algo? Gracias
Intentamos redimensionar tanto en dispositivos móviles como en escritorio, pero la operación de redimensionamiento puede fallar si el hardware de tu dispositivo es demasiado débil. En ese caso, lo omitimos.