Cómo almacenar una image muy grande en un iPhone / iPad

¿Cuál es la mejor manera de almacenar una image muy grande para una aplicación de iOS? Quiero que una aplicación pueda ver imágenes que pueden ser cientos de megabytes, quizás tanto como un gigabyte como jpeg. Necesito poder almacenar la image y recuperar áreas seleccionadas para su visualización.

Actualmente, las imágenes se cortan en mosaicos de 512×512 píxeles y se almacenan como files jpeg en un tree de directorys con decenas de miles de mosaicos (en realidad una pirámide de imágenes que incluye muestras inferiores).

Ignorando la cuestión de mostrar la image, me interesa la manera más eficiente y manejable de almacenar esta información en el dispositivo: ¿files, como actualmente, en una database sqlite u otra cosa?

Segunda parte de la pregunta. ¿Hay un límite en la cantidad de datos que una aplicación puede almacenar, o puede una aplicación seguir importando datos hasta el límite de almacenamiento del dispositivo. Estoy preguntando aquí sobre los datos que una aplicación importa después de que esté instalada.

La solución a esto es pre parar la enorme image para que las fichas se puedan recuperar rápidamente del sistema de files según sea necesario. Un problema con las imágenes muy grandes es que la mayoría de las soluciones requieren que la image completa se convierta en un context, consumiendo grandes cantidades de memory. En un sistema como iOS, donde la memory es limitada, la forma de resolver esto es usar una biblioteca como libjeg o libjpegturbo para representar una image de una línea a la vez, luego save los píxeles en un file sin formatting. La desventaja de hacer esto directamente es que cuando necesitas una ficha, necesitas saltar por todo el sistema de files para encontrar cada fila de una ficha. Por lo tanto, una mejor solución es no solo escanear gradualmente, sino también incrementar gradualmente. Puede usar mmap para asignar el file en el área que necesita, por lo que realmente puede minimizar el consumo de memory. Dicho esto, ¡puedes golpear la queue de búferes unificada en iOS tan mal que la aplicación se cuelga, o incluso todo el sistema!

Si tiene curiosidad sobre cómo implementar la solución anterior, hay un proyecto disponible gratuitamente en github – PhotoScrollerNetwork – que hace todo lo anterior.

Una muestra de Apple: PhotoScroller

¿Qué pasa con la split en partes. Luego puede ser recostackda por su aplicación si es necesario

    Intereting Posts