Réduire la taille de file de l'image de la bibliothèque photo / photo pour less de 100 Ko dans l'iphone

Je veux réduire la taille du file image qui provient de UIImagePickerController . J'utilise cette méthode

NSData * imageData = UIImageJPEGRepresentation (image, 0.1);

mais il réduit la taille du file image de 2,2 Mo à 300 Ko Je veux que la taille de mon file image soit inférieure à 100 Ko.

Le moyen le plus simple de réduire la taille de l'image en kilos est de réduire la taille en pixels! Échelle plus petite:

 CGFloat scaleSize = 0.2f; UIImage *smallImage = [UIImage imageWithCGImage:image.CGImage scale:scaleSize orientation:image.imageOrientation]; 

L'état des docs d'Apple:

La qualité de l'image JPEG résultante, exprimée par une valeur de 0,0 à 1,0. La valeur 0.0 représente la compression maximale (ou la qualité la plus basse) tandis que la valeur 1.0 représente la compression la plus faible (ou la meilleure qualité).

Et puisque la qualité de compression est un CGFloat, elle prend en charge les décimales au-delà de la dixième place. Cela étant dit, essayez:

 NSData *imageData = UIImageJPEGRepresentation(image, 0.032); 

Redimensionnez d'abord l'image avec la méthode ci-dessous:

 - (UIImage *)resizeImage:(UIImage*)image newSize:(CGSize)newSize { UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } 

appelez ceci en:

 UIImage *newImage=yourImage; CGSize size=CGSizeMake(newImage.size.width/8,newImage.size.height/8); newImage=[self resizeImage:newImage newSize:size]; 

Et enfin compressé votre image selon les besoins:

 NSData *imageData = UIImageJPEGRepresentation(newImage, 0.5); NSLog(@"Size of image = %lu KB",(imageData.length/1024));