¿Cómo implementa HotelTonight el efecto de desenfoque dinámico en tiempo real en su aplicación iOS 7?

¿Puedes especificar de qué desenfoque estás hablando?

Tenemos dos efectos de desenfoque diferentes. El desenfoque detrás de la página HotelDetails (dinámico) y la transición de desenfoque al acceder a la cuenta o las páginas de búsqueda (fondo estático).

El desenfoque dinámico se realiza utilizando una versión ligeramente modificada de AMBlurView (JagCesar / iOS-blur)

La transición de desenfoque es una combinación de diferentes efectos usando BradLarson / GPUImage y algunos sombreadores personalizados.
El primer tercio es una mezcla de la imagen original a una versión de baja resolución algo borrosa, luego el desenfoque en tiempo real con radios de desenfoque animado se hace cargo (estoy haciendo un gran desenfoque del núcleo en la imagen de baja resolución y en una segunda pasada un Desenfoque de núcleo compacto para obtener el aspecto suave). El desenfoque en tiempo real se realiza utilizando una GPUImageView que se actualiza con CADisplayLink.
Cuando paso de borroso a agudo hago lo contrario. Intentaré escribir una publicación de blog en nuestro blog de ingeniería pronto: http: //engineering.hoteltonight….

Esperemos que uno de los desarrolladores de Hotel Tonight pueda responder eventualmente.

He hecho desenfoque en tiempo real fingiéndolo. Para una transición de VC personalizada, quería difuminar el contenido de VC actual y hacer que apareciera debajo de los nuevos VC. Entonces, para “animar” el desenfoque, borré una instantánea de la imagen y luego la desvanecí animando el alfa del desenfoque de 0 a 1. Creo que se ve bien, pero lo más importante es que es bastante rápido.

De otra investigación que he hecho, creo que algunos usan una biblioteca de código abierto llamada GPUImage para lograr el efecto. No lo he intentado yo mismo para ver qué tan bien funciona realmente, pero supongo que no puede ser tan bueno. Tenga en cuenta que las imágenes borrosas no son realmente algo del SDK, sino algo que Apple proporcionó anteriormente una categoría de código de muestra. Y cuando hablamos de cómo lograr efectos en tiempo real, creo que los desarrolladores de Apple han dicho que usan trucos inteligentes. Y, creo que los borrosos de iOS 7 ni siquiera son compatibles con el iPhone 4. Mi idea es que a principios de 2014, iOS todavía no está listo para el desenfoque en tiempo real en todo el lugar.

No puedo hablar por HotelTonight, pero una forma de mejorar la velocidad de un desenfoque sería reducir la imagen, desenfocarla y volver a escalarla.

Debido a que los desenfoques de convolución son O (n ^ 2), reducir a la mitad la imagen en cada dimensión daría como resultado un aumento de velocidad de aproximadamente × 16.

Cuando vuelve a escalar la imagen, inevitablemente perderá algunos detalles, pero está bien, porque de todos modos está tratando de desenfocarla.