Je souhaite utiliser la fonction CGImageSourceCreateThumbnailAtIndex
pour créer une miniature à partir d'un UIImage
. Tout ce que j'ai, c'est le UIImage
lui-même. L'image est l'instantané sur un UIView
.Création d'une miniature à partir d'UIImage à l'aide de CGImageSourceCreateThumbnailAtIndex
S'il vous plaît, je ne veux pas utiliser d'autre méthode pour créer la vignette, juste celle utilisant CGImageSourceCreateThumbnailAtIndex
, parce que je veux comparer ses performances avec les autres méthodes que j'ai déjà.
Dit que, c'est le code que j'ai jusqu'ici.
J'ai créer une catégorie UIImage
avec ce code:
- (UIImage *)createSquaredThumbnailWithWidth:(NSInteger)width {
CFDictionaryRef options = (__bridge CFDictionaryRef) @{
(id) kCGImageSourceCreateThumbnailWithTransform : @YES,
(id) kCGImageSourceCreateThumbnailFromImageAlways : @YES,
(id) kCGImageSourceThumbnailMaxPixelSize : @(width)
};
CGImageRef scaledImageRef = CGImageSourceCreateThumbnailAtIndex(????, 0, options);
UIImage* scaled = [UIImage imageWithCGImage:scaledImageRef];
CGImageRelease(scaledImageRef);
return scaled;
}
Mon problème est avec cette ligne:
CGImageRef scaledImageRef = CGImageSourceCreateThumbnailAtIndex(????, 0, options);
Le premier paramètre de cette fonction exige une CGImageSourceRef
, mais comme je l'ai dit, J'ai juste un UIImage
, cette image est sur la mémoire, pas sur le disque, et je ne veux pas l'enregistrer sur le disque, ou la performance ira dans le drain.
Comment puis-je obtenir un CGImageSourceRef
à partir d'un UIImage
qui est sur la mémoire ???
Qu'en est-il de la mémoire? toutes les instances d'image sont en mémoire. Utilisez-le comme @Nirav D a dit. –