2011-06-09 4 views
0

Je travaille actuellement sur une application "dropbox" qui a une visionneuse intégrée pour les fichiers/images. Le problème: lorsqu'un utilisateur a stocké une image en très haute résolution sur le serveur et veut l'afficher sur l'appareil, l'application va planter.Traitement d'images haute résolution avec iOS

Exemple: photo panoramique avec 12000x4000 px. Est-il possible de réduire cette image (sur le client - côté iOS)?

En ce moment je suis à l'aide des classes: http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/

Mais je dois trouver un moyen sans utiliser> 300 Mo de mémoire ...

Répondre

5

Si vous contrôlez le serveur, puis faites-le server- côté. Je ne voudrais pas télécharger une image 12000x4000 sur 3G juste pour l'afficher à 640x960.

+0

Malheureusement, nous devons résoudre ce problème côté client. – cweinberger

1

Vous devriez envisager de gérer cette image de la même façon que Google Maps gère les grandes images, en faisant un peu de roi de l'image sur CATiledLayer, s'il vous plaît vérifier l'exemple PhotoScroller sur la documentation Apple.

+0

problème est la manipulation de ces images ... avant d'utiliser des couches en mosaïque, je dois les fournir .. à cet effet, je dois couper l'image en quelque sorte - mais cela va aussi utiliser trop de mémoire:/ – cweinberger

+0

Vous pouvez utiliser ImageMagick sur le côté serveur pour les couper, le pavage d'image est le seul moyen de résoudre votre problème, désolé à ce sujet. – ararog

+0

Veuillez vérifier ce [link] (http://iphonedevelopment.blogspot.com/2010/10/cutting-large-images-into-tiles-for.html) sur la façon d'effectuer le pavage d'images pour les applications iPhone. – ararog

1

Consultez le projet de code d'exemple Apple Large Image Downsizing. Contrairement à CATiledLayer, il créera en réalité une nouvelle image plus petite en mémoire à partir d'une image plus grande sur le disque local iOS. Un zoom arrière complet sur CATiledLayer tentera de décoder toute l'image source comme requis pour l'afficher. Cette technique réduit cependant l'image source dans les bandes de pleine largeur, de sorte que le tout n'est jamais tenté de charger en mémoire en une seule fois. TIFF, JPEG, PNG sont supportés. BMP, GIF, images entrelacées ne sont pas supportés.

Comme mentionné dans le fichier ReadMe, l'image source peut exister dans le regroupement d'applications, le rouleau de photos ou ailleurs (par exemple OTA téléchargé).

Questions connexes