Optimización de imágenes en web y nativo

Rate this content
Bookmark

Se puede decir que muchos sitios web y aplicaciones en la actualidad dependen en gran medida de las imágenes: imágenes de productos, avatares, compartición en redes sociales. Con los avances tecnológicos continuos, la variedad de tamaños de dispositivos que necesitas soportar sigue creciendo. ¿Cómo podemos hacer que la misma página se vea genial y tenga un rendimiento óptimo tanto en un MacBook Pro de 16'' con pantalla retina como en un pequeño teléfono Android de 5 años? Veremos algunos de los enfoques modernos para abordar este problema en web y nativo, así como lo que sucede si no lo haces.

FAQ

Kati Cremmann es la desarrolladora principal de ReactJS y directora de ingeniería móvil en Promotable, una consultoría especializada en JavaScript.

La charla de Kati Cremmann trata sobre la optimización de imágenes para dispositivos móviles y web, enfocándose en cómo manejar correctamente el tamaño y las dimensiones de las imágenes.

Las dos maneras de optimizar imágenes incluyen ajustar el contenido de la imagen, como el recorte y la elección de la orientación, y reducir el tamaño del archivo de la imagen para mejorar la carga en aplicaciones y sitios web.

Una relación de aspecto es una proporción entre el ancho y la altura de una imagen, usada para comunicar al diseñador o fotógrafo las dimensiones necesarias para que la imagen se ajuste correctamente en diferentes dispositivos.

La densidad de píxeles indica cuántos píxeles se necesitan para formar un punto de visualización en un dispositivo. Es crucial para asegurar que las imágenes se vean nítidas y claras en dispositivos con diferentes densidades de pantalla.

Usando un CDN (Content Delivery Network), las imágenes pueden ser solicitadas en tamaños específicos ajustados al dispositivo que las necesita. El CDN puede generar y cachear estas imágenes dinámicamente para optimizar tiempos de carga y rendimiento.

Kati recomienda reducir las dimensiones de las imágenes a lo que realmente se necesita y considerar la densidad de píxeles para evitar problemas de rendimiento y asegurar que las imágenes no causen bloqueos en la aplicación.

Kadi Kraman
Kadi Kraman
21 min
02 Jun, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Esta charla se centra en la optimización de imágenes para dispositivos móviles y web. Se enfatiza la importancia de las dimensiones de las imágenes en la optimización y se comparte una historia sobre los bloqueos encontrados en una aplicación móvil debido al contenido pesado de imágenes. La charla discute la representación y el tamaño de las imágenes, utilizando dimensiones y densidad de píxeles, optimizando imágenes para diferentes dispositivos y tamaños de pantalla, y la importancia de la optimización del tamaño y formato de las imágenes. Se recomiendan herramientas como Cloudinary para la optimización de imágenes.

1. Introducción a la Optimización de Imágenes

Short description:

Hola, mi nombre es Kati Cremmann. Soy la desarrolladora principal de ReactJS. Esta es una charla sobre la optimización de imágenes para móviles y web. La optimización de imágenes implica optimizar el contenido y el tamaño del archivo. Para la optimización del contenido, la relación de aspecto es crucial. Para la optimización del tamaño del archivo, debemos minimizar los recursos.

Hola, mi nombre es Kati Cremmann. Soy la desarrolladora principal de ReactJS. Y esta es una charla de nuestra nueva ponente invitada, Kati. ¡Hola! Gracias. Ustedes son mis verdaderos amigos. Gracias a todos los que se quedaron justo antes del almuerzo. Trataré de ser breve. Gracias por esa introducción, Janne. Fue increíble, como siempre.

Así que, hola, mi nombre es Kati Cremmann. Soy la directora de ingeniería móvil en este momento en Promotable. Somos una consultoría de JavaScript increíble. Construimos cosas en React y React Native. Y muchas de estas cosas incluyen imágenes, lo que nos lleva al tema de mi charla, que trata sobre la optimización de imágenes para móviles y web.

Entonces, ¿qué quiero decir exactamente con optimizar imágenes? Puedes pensar en ello de dos maneras. Una forma es optimizar el contenido de la imagen. Optimizar el recorte de la imagen. ¿Vas a usar retrato o paisaje? ¿Dónde quieres ajustar el sujeto de la imagen para que se ajuste mejor a la posición que tienes en la pantalla? Para darte un ejemplo, a la izquierda tenemos una imagen original, que está en modo retrato . Y digamos que nuestro objetivo era usarla como imagen principal en un sitio web o tal vez como una imagen de banner en Twitter. Esta no es una imagen óptima para este caso de uso, porque, como puedes ver, no hay una buena manera de recortarla, así que terminamos con medio niño. Pero esta charla no trata sobre recortar. Si se tratara de recortar, el resumen al final sería usar una relación de aspecto. Como desarrolladores, generalmente no somos responsables de tomar las imágenes y posicionar las imágenes. Eso es trabajo de los expertos. Pero la forma en que comunicamos lo que necesitamos, las posiciones que tenemos en las pantallas, es mediante el uso de una relación de aspecto. Una relación de aspecto es una proporción entre el ancho y la altura de una imagen. Entonces, en lugar de decir, necesito una imagen de 750 por 500, puedes decirle a tu diseñador o fotógrafo que necesitas una imagen con una relación de aspecto de tres a dos, y ellos pueden darte la imagen de la más alta calidad que puedan.

La otra forma de ver las imágenes es mirar el tamaño del archivo. Esto es algo que estamos más acostumbrados a optimizar, porque somos conscientes de que cuando estamos renderizando una aplicación móvil o renderizando un sitio web, el usuario tiene que descargar todos los recursos desde el servidor antes de que podamos mostrarlos. Por lo tanto, queremos que estos recursos, imágenes, paquetes de JavaScript, CSS, sean lo más pequeños posible.

2. Importancia de las Dimensiones de la Imagen

Short description:

El ancho y alto de una imagen son muy importantes en la optimización de imágenes. A medida que avanza la tecnología, el problema de la optimización de imágenes se vuelve más difícil. Por ejemplo, una imagen de alta resolución puede tener un tamaño de archivo grande, lo que la hace inadecuada para una buena experiencia de usuario. Reducir las dimensiones de la imagen puede ayudar en la optimización de imágenes. Compartiré una historia que motivó esta charla sobre la importancia de las dimensiones de la imagen. Al construir una aplicación móvil con mucho contenido de imágenes, nos encontramos con bloqueos después de algunas páginas.

Y lo otro de lo que quiero hablar es de las dimensiones de la imagen. Específicamente, el ancho y el alto de la imagen, que también son importantes. Y he agregado un signo de interrogación aquí porque es posible que no te des cuenta de cuánto importa.

Cuando hablaba sobre la optimización de imágenes ayer con algunas personas, muchas personas se preguntaron cómo es posible que todavía estemos resolviendo un problema de optimización de imágenes. Las personas intentaban optimizar imágenes hace diez años. Cuando hablaba sobre el tema de mi charla, llegamos a la conclusión de que las personas han estado haciendo este tipo de cosas similares durante años y años. Pero el problema es que a medida que avanza la tecnología, el problema que estamos resolviendo se vuelve más difícil.

Para darte un ejemplo, esta es una imagen que mi amigo Taz tomó de mí hace un par de semanas. Taz tiene una cámara muy buena, de última generación. Y es genial. Puedo hacer zoom, como en CSI, y descubrir exactamente a qué hora se tomó esta imagen. Sin embargo, esta resolución viene con el costo de un tamaño de archivo grande. Si reviso los metadatos del archivo, veo que esta imagen sola tiene 21 megabytes. Y tiene 8,000 por 5,000 píxeles. Esta es la imagen de origen que tu fotógrafo te dará para usar en tus sitios web y aplicaciones móviles. Y obviamente no puedes usarla directamente porque no brindará una buena experiencia de usuario. Si quisiera usar esto en mi sitio web, podría reducir las dimensiones, pasarla por el confiable Panda de TinyPNG, y podría terminar con algo mucho más pequeño. Así que esto es 100 megabytes. Aún no es ideal, pero es utilizable. Y he reducido las dimensiones de la imagen. Y notarás que he mencionado las dimensiones de la imagen varias veces. Y es posible que te preguntes por qué es tan importante. Y te contaré una historia, que en realidad es la historia que motivó esta charla.

Esto sucedió hace un par de años, muchos años atrás, cuando estaba construyendo una aplicación móvil. La aplicación móvil estaba lista. Aún no estaba en vivo, no estaba disponible para los usuarios. Pero estaba lista para que los administradores de contenido agregaran contenido y probaran las cosas para asegurarse de que todo estuviera listo antes de lanzarlo. Y la aplicación en sí no importa para los propósitos de esta historia. Pero lo que debes saber es que tenía muchas imágenes, era muy pesada en imágenes. Toda la aplicación, cada página, tenía muchas imágenes personalizadas tomadas profesionalmente en varias configuraciones. Y lo que descubrimos es que los administradores de contenido volvían a nosotros y decían que después de un par de páginas, la aplicación se bloqueaba.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Una Guía del Comportamiento de Renderizado de React
React Advanced Conference 2022React Advanced Conference 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
React es una biblioteca para "renderizar" UI a partir de componentes, pero muchos usuarios se encuentran confundidos acerca de cómo funciona realmente el renderizado de React. ¿Qué significan términos como "renderizado", "reconciliación", "Fibers", y "committing"? ¿Cuándo ocurren los renderizados? ¿Cómo afecta el Contexto al renderizado, y cómo las bibliotecas como Redux causan actualizaciones? En esta charla, aclararemos la confusión y proporcionaremos una base sólida para entender cuándo, por qué, y cómo React renderiza. Veremos: - Qué es realmente el "renderizado" - Cómo React encola los renderizados y el comportamiento de renderizado estándar - Cómo se utilizan las claves y los tipos de componentes en el renderizado - Técnicas para optimizar el rendimiento del renderizado - Cómo el uso del contexto afecta al comportamiento del renderizado - Cómo las bibliotecas externas se integran en el renderizado de React
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
¿Demasiado JavaScript te está agobiando? Los nuevos marcos que prometen no usar JavaScript parecen interesantes, pero tienes una aplicación React existente que mantener. ¿Qué tal si Qwik React es tu respuesta para un inicio de aplicaciones más rápido y una mejor experiencia de usuario? Qwik React te permite convertir fácilmente tu aplicación React en una colección de islas, que pueden ser renderizadas en el servidor y rehidratadas con retraso, e incluso en algunos casos, se puede omitir la rehidratación por completo. Y todo esto de manera incremental sin una reescritura.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
¡React 18! ¡Funciones concurrentes! Tal vez ya hayas probado las nuevas APIs como useTransition, o tal vez solo hayas oído hablar de ellas. Pero, ¿sabes cómo React 18 logra las mejoras de rendimiento que trae consigo? En esta charla, echemos un vistazo bajo el capó de las características de rendimiento de React 18: - Cómo React 18 reduce el tiempo que tu página permanece congelada (también conocido como TBT) - Qué sucede exactamente en el hilo principal cuando ejecutas useTransition() - Cuál es la trampa con las mejoras (¡no hay torta gratis!), y por qué Vue.js y Preact se negaron rotundamente a lanzar algo similar
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Nuestra comprensión del rendimiento y la experiencia del usuario ha evolucionado mucho a lo largo de los años. Las herramientas de desarrollo web necesitan evolucionar de manera similar para asegurarse de que sean centradas en el usuario, accionables y contextuales donde se refiere a las experiencias modernas. En esta charla, Addy te guiará a través de cómo Chrome y otros han estado pensando en este problema y qué actualizaciones han estado haciendo a las herramientas de rendimiento para reducir la fricción para construir grandes experiencias en la web.
Optimización de juegos HTML5: 10 años de aprendizaje
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Optimización de juegos HTML5: 10 años de aprendizaje
Top Content
El motor de juegos de código abierto PlayCanvas está construido específicamente para el navegador, incorporando 10 años de aprendizaje sobre optimización. En esta charla, descubrirás la salsa secreta que permite a PlayCanvas generar juegos con tiempos de carga increíblemente rápidos y tasas de fotogramas sólidas como una roca.
Solucionando Problemas de Rendimiento en React
React Advanced Conference 2023React Advanced Conference 2023
22 min
Solucionando Problemas de Rendimiento en React
Top Content
Next.js y otros marcos de trabajo que envuelven a React proporcionan un gran poder en la construcción de aplicaciones más grandes. Pero con gran poder viene una gran responsabilidad de rendimiento - y si no prestas atención, es fácil añadir varios segundos de penalización de carga en todas tus páginas. ¡Vaya! Vamos a recorrer un estudio de caso de cómo unas pocas horas de depuración de rendimiento mejoraron tanto los tiempos de carga como los de análisis para la aplicación Centered en varios cientos por ciento cada uno. Aprenderemos no solo por qué ocurren esos problemas de rendimiento, sino cómo diagnosticarlos y solucionarlos. ¡Viva el rendimiento! ⚡️

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Featured WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
Presentando FlashList: Construyamos juntos una lista performante en React Native
React Advanced Conference 2022React Advanced Conference 2022
81 min
Presentando FlashList: Construyamos juntos una lista performante en React Native
Top Content
WorkshopFree
David Cortés Fulla
Marek Fořt
Talha Naqvi
3 authors
En esta masterclass aprenderás por qué creamos FlashList en Shopify y cómo puedes usarlo en tu código hoy. Te mostraremos cómo tomar una lista que no es performante en FlatList y hacerla performante usando FlashList con mínimo esfuerzo. Usaremos herramientas como Flipper, nuestro propio código de benchmarking, y te enseñaremos cómo la API de FlashList puede cubrir casos de uso más complejos y aún así mantener un rendimiento de primera categoría.Sabrás:- Breve presentación sobre qué es FlashList, por qué lo construimos, etc.- Migrando de FlatList a FlashList- Enseñando cómo escribir una lista performante- Utilizando las herramientas proporcionadas por la biblioteca FlashList (principalmente el hook useBenchmark)- Usando los plugins de Flipper (gráfico de llamas, nuestro perfilador de listas, perfilador de UI & JS FPS, etc.)- Optimizando el rendimiento de FlashList utilizando props más avanzados como `getType`- 5-6 tareas de muestra donde descubriremos y solucionaremos problemas juntos- Preguntas y respuestas con el equipo de Shopify
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
React Summit 2022React Summit 2022
117 min
Detox 101: Cómo escribir pruebas de extremo a extremo estables para su aplicación React Native
Top Content
WorkshopFree
Yevheniia Hlovatska
Yevheniia Hlovatska
A diferencia de las pruebas unitarias, las pruebas de extremo a extremo buscan interactuar con su aplicación tal como lo haría un usuario real. Y como todos sabemos, puede ser bastante desafiante. Especialmente cuando hablamos de aplicaciones móviles.
Las pruebas dependen de muchas condiciones y se consideran lentas e inestables. Por otro lado, las pruebas de extremo a extremo pueden dar la mayor confianza de que su aplicación está funcionando. Y si se hace correctamente, puede convertirse en una herramienta increíble para aumentar la velocidad del desarrollador.
Detox es un marco de pruebas de extremo a extremo en caja gris para aplicaciones móviles. Desarrollado por Wix para resolver el problema de la lentitud e inestabilidad y utilizado por React Native en sí como su herramienta de pruebas E2E.
Únete a mí en esta masterclass para aprender cómo hacer que tus pruebas de extremo a extremo móviles con Detox sean excelentes.
Prerrequisitos- iOS/Android: MacOS Catalina o más reciente- Solo Android: Linux- Instalar antes de la masterclass
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
React Summit Remote Edition 2021React Summit Remote Edition 2021
60 min
Cómo construir una animación interactiva de “Rueda de la Fortuna” con React Native
Top Content
Workshop
Oli Bates
Oli Bates
- Introducción - Cleo & nuestra misión- Lo que queremos construir, cómo encaja en nuestro producto & propósito, revisar los diseños- Comenzando con la configuración del entorno & “hola mundo”- Introducción a la animación de React Native- Paso 1: Hacer girar la rueda al presionar un botón- Paso 2: Arrastrar la rueda para darle velocidad- Paso 3: Agregar fricción a la rueda para frenarla- Paso 4 (extra): Agregar hápticos para una sensación inmersiva