J'ai une application pour iPhone qui, entre autres, permet aux utilisateurs de stocker des photos. Lorsqu'une nouvelle photo est ajoutée au magasin de données de l'application, je mets en cache une version miniature de l'image afin que les grilles de miniatures de photos se chargent dans un délai raisonnable.Mise à jour des images sauvegardées pour l'écran Retina
Le problème est que ces vignettes sont superbes sur un écran d'affichage Pre-Retina, mais elles ont l'air un peu flou sur les affichages RD. Ce n'est pas si grave que les images sont inutilisables, mais j'aimerais vraiment pouvoir profiter pleinement de Retina Display pour les utilisateurs d'images enregistrés avec les anciennes versions de mon application.
Le problème est que la recréation de toutes ces vignettes prend trop de temps. Dans mes tests, il a fallu environ une minute et demie pour ré-encoder un exemple de base de données en miniatures haute résolution (certes une grande) sur mon iPhone 4. Ce sera encore pire sur du matériel plus ancien.
Comment puis-je contourner le problème? Faire une migration ponctuelle semble hors de question, étant donné les résultats de performance ci-dessus. D'autres options réduisent paresseusement les vignettes (c'est-à-dire lorsqu'elles sont affichées à l'écran), puis les enregistrent dans la base de données à ce moment-là. Les écrans remplis d'anciennes images seront lents la première fois qu'ils seront visionnés, puis plus rapides après cela.
Y a-t-il d'autres approches à considérer? Quelqu'un d'autre a fait face à ce problème?
-1. Les images sont traitées comme des textures sur le GPU, et (pour autant que je sache) utilisent l'interpolation bicubique par défaut. –
DUDE! Vous me marquez et vous n'avez pas raison. Les images d'affichage non retina ne sont PAS affichées en utilisant l'interpolation bicubique. Les pixels sont doublés. 1 pixel devient 4 pixels de la même couleur et semble pixélisé et dentelé. Bicubic ne double pas le pixel et vous donne une image beaucoup plus lisse. Veuillez corriger votre vote s'il vous plaît. –