Сохранить изображение в песочнице из UIImage в iPhone - PullRequest
12 голосов
/ 20 июля 2009

Я показываю изображения очень большого размера в UITableView, из-за этого через некоторое время происходит сбой моего приложения. Теперь я хочу изменить размер изображения и сохранить его на диск. Может ли кто-нибудь помочь мне изменить размер образа из NSData / UIImage и сохранить его на диск.

Я получил код для изменения размера изображения из UIImage, поэтому в результате я изменил свой размер изображения в объекте UIImage, как сохранить его в песочнице iphone.

Спасибо

Ответы [ 3 ]

30 голосов
/ 19 марта 2012

Вот код для сохранения в каталоге Documents на iOS, который является рабочим кодом.

// Convert UIImage to JPEG
NSData *imgData = UIImageJPEGRepresentation(image, 1); // 1 is compression quality

// Identify the home directory and file name    
NSString  *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"]; 

// Write the file.  Choose YES atomically to enforce an all or none write. Use the NO flag if partially written files are okay which can occur in cases of corruption
[imgData writeToFile:jpgPath atomically:YES]; 
4 голосов
/ 20 июля 2009

Вы спрашиваете «как мне записать файл», верно?

Полагаю, есть некоторая сложность в том, что вы, вероятно, захотите записать в каталог Library / Caches, поэтому при резервном копировании телефона вы не сохраняете эти файлы.

Получите корень папки приложения w / NSHomeDirectory(), а затем добавьте Library / Caches.

Вы можете записать NSData в метод fs w / a в NSData. Если у вас есть UIImage, вы можете сделать UIImageJPEGRepresentation() или UIImagePNGRepresentation для получения данных.

1 голос
/ 27 сентября 2011

NSData *imgData = UIImageJPEGRepresentation(image, 1);

CGImageSourceRef source = CGImageSourceCreateWithData((CFMutableDataRef)imgData, NULL);
NSDictionary *metadata = [(NSDictionary *) CGImageSourceCopyPropertiesAtIndex(source,0,NULL)autorelease];
NSString  *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"];
[imageMutableData writeToFile:jpgPath atomically:YES];

Он скопирует ваше изображение в папку с документами в песочнице с именем Test.jpg.

Если вы хотите сделать это для PNG, вы можете попробовать UIImagePNGRepresentation(image);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...