Получение данных из UIImage в PNG или JPEG
UIKit включает две C-функции, UIImageJPEGRepresentation и UIImagePNGRepresentation, которые возвращают объект NSData, который представлен в формате JPEG или PNG. Имея эти данные, мы можем, используя метод writeToFile объекта NSData, записать данные изображения по заданному пути.
Ниже приведен фрагмет кода с подробными комментариями:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// Создаем пути для выходных изображений NSString *pngPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.png"]; NSString *jpgPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Test.jpg"]; // Записываем UIImage в JPEG с минимальным сжатием (лучшее качество) // 'image' должен быть объектом UIImage // Значение '1.0' задает степень сжатия изображения как значение от 0.0 до 1.0 [UIImageJPEGRepresentation(image, 1.0) writeToFile:jpgPath atomically:YES]; // Записываем изображение как PNG [UIImagePNGRepresentation(image) writeToFile:pngPath atomically:YES]; // Теперь проверим наглядно, что файлы были корректно записаны... // Создаем файловый менеджер NSError *error; NSFileManager *fileMgr = [NSFileManager defaultManager]; // Указываем папку с документами NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; // Выводим содержимое домашней папки в консоль NSLog(@"Documents directory: %@", [fileMgr contentsOfDirectoryAtPath:documentsDirectory error:&error]); |
Важно отметить, что в стоках 6 и 9 значение image должно быть объектом UIImage.
P.S.: Это перевод оригинального поста. Вот ссылка на исходный код, выложенный в нем же.
Полезная статья? Их будет больше, если вы поддержите меня!