Quel est le moyen le plus efficace pour créer une vignette à partir d'une image Web arbitraire dans l'iPhone?Création de vignettes efficace sur l'iPhone
Répondre
La seule façon que je l'ai trouvé à ce jour qui fonctionne sur toutes les images est de le montrer dans un ImageView avec la bonne taille, puis créer une image bitmap de ce point de vue.
Loin d'être efficace, cependant.
En ce qui concerne l'auteur, cela ne doit pas être marqué comme la bonne réponse. –
Donne-moi "CGBitmapContextCreate: espace de couleurs non supporté." au premier essai. Après avoir vérifié les commentaires, il semble que la portée de cette bibliothèque est très limitée. Je ne peux pas supposer une grande partie des images (autres que ce sont PNG ou JPEG). – hpique
Cela est dû au fait que l'API est très pointilleuse sur la relation entre la résolution en bits, l'alpha et l'espace de couleurs. Vous devez vérifier que l'image a la configuration correcte et ensuite créer une nouvelle image correctement formatée si ce n'est pas le cas. C'est vraiment inévitable. Je ne pense pas que quiconque a fait un redimensionnement générique qui fonctionne avec tout. – TechZen
Comment puis-je vérifier s'il a la bonne configuration et ensuite créer une image correctement formatée si ce n'est pas le cas? – hpique
la comparaison de deux méthode pour rapide création de la miniature de l'image voir ce link détail http://www.cocoaintheshell.com/2011/01/uiimage-scaling-imageio/ ou http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
pour l'avenir, il suffit de copier le code coller de premier
Première méthode, en utilisant UIKit
void)buildGallery
{
for (NSUInteger i = 0; i < kMaxPictures; i++)
{
NSInteger imgTag = i + 1;
NYXPictureView* v = [[NYXPictureView alloc] initWithFrame:(CGRect){.origin.x = x, .origin.y = y, .size = _thumbSize}];
NSString* imgPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d", imgTag] ofType:@"jpg"];
UIImage* fullImage = [[UIImage alloc] initWithContentsOfFile:imgPath];
[v setImage:[fullImage imageScaledToFitSize:_thumbSize]];
[fullImage release];
}
Résultats des bancs m'a donné les résultats suivants:
- Temps Profiler: 4233ms
- octets en direct: 695KB
- octets global utilisé: 78.96Mb
méthode En second lieu, en utilisant ImageIO
-(void)buildGallery
{
for (NSUInteger i = 0; i < kMaxPictures; i++)
{
NSInteger imgTag = i + 1;
NYXPictureView* v = [[NYXPictureView alloc] initWithFrame:(CGRect){.origin.x = x, .origin.y = y, .size = _thumbSize}];
NSString* imgPath = [[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%d", imgTag] ofType:@"jpg"];
CGImageSourceRef src = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:imgPath], NULL);
CFDictionaryRef options = (CFDictionaryRef)[[NSDictionary alloc] initWithObjectsAndKeys:(id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailWithTransform, (id)kCFBooleanTrue, (id)kCGImageSourceCreateThumbnailFromImageIfAbsent, (id)[NSNumber numberWithDouble:_maxSize], (id)kCGImageSourceThumbnailMaxPixelSize, nil];
CGImageRef thumbnail = CGImageSourceCreateThumbnailAtIndex(src, 0, options); // Create scaled image
CFRelease(options);
CFRelease(src);
UIImage* img = [[UIImage alloc] initWithCGImage:thumbnail];
[v setImage:img];
[img release];
CGImageRelease(thumbnail);
}
il m'a donné ceci:
- Temps Profiler: 3433ms
- octets en direct: 681KB
- octets global utilisé: 77.63Mb
Vous pouvez voir que l'utilisation ImageIO est environ 19% plus rapide que UIKit, et utilise aussi légèrement moins de mémoire.
- 1. codeigniter création de vignettes
- 2. PHP: Création de vignettes rognées d'images, problèmes
- 3. Création de vignettes à partir d'un fichier swf en PHP?
- 4. La compression d'image et la création de vignettes pour PHP
- 5. Effet d'iphoto sur les vignettes?
- 6. sur les vignettes hover jouent
- 7. Scénario de création de vignettes de sites Web Création à l'instar de Google Instant Preview
- 8. Un moyen efficace de générer des vignettes de taille fixe pour les images de grande taille?
- 9. Vignettes vidéo
- 10. Création efficace de pages Web à partir de plusieurs serveurs
- 11. Création du dégradé de couleurs plein écran le plus efficace
- 12. Chargement des vignettes de problèmes
- 13. Création de règles efficace pour les grandes formes
- 14. Mini barre de défilement avec des vignettes sur l'iphone
- 15. Limiter le nombre de vignettes sur facebook partager
- 16. paperclip ne crée pas de vignettes sur heroku
- 17. Obtention de vignettes vidéo iPhone
- 18. améliorer mon générateur de vignettes?
- 19. vignettes vidéo dans WPF
- 20. Thème Wordpress: création de force de la taille des vignettes nouvellement créé
- 21. Interrogation des vignettes Wordpress
- 22. Vignettes coulissantes verticales flexibles
- 23. Chargement de vignettes pour l'imageview dans une cellule de tableau
- 24. Contrôle d'image miniature efficace pour Python?
- 25. Génération de vignettes MS Office sous Linux
- 26. Question sur la performance des vignettes d'image en PHP
- 27. Meilleure façon d'avoir un curseur photo/vignettes sur iPhone?
- 28. Vignettes de médias Android. De graves problèmes?
- 29. TimThumb vs Sauvegarde des vignettes
- 30. detailedViewController iPad affichant les vignettes
ImageIO est toujours le plus rapide à partir de 2014. Pour un bon résumé des techniques supplémentaires, reportez-vous à cet article: http://nshipster.com/image-resizing/ –