2014-04-13 3 views
0

Я знаю этот способ сохранить изображение в каталоге документа.Сохранить каталог UIImage в документах

// Save image. 
[UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES]; 

Но хотите сохранить UIImage в каталоге документов непосредственно без преобразования его в NSData. Там в любом случае?

+0

Почему? Что случилось с преобразованием его в «NSData»? Это, безусловно, делает его гораздо меньшим файлом. Сохранение необработанных байтов 'UIImage' будет огромным. – rmaddy

+0

@rmaddy остро я должен сохранить 40 + изображений, но это занимает много времени. Поскольку он преобразует UIImage в NSData, тогда он записывает его в каталог. Так что просто для быстрой обработки сохранить изображение, я ищу альтернативу. – vijay

+1

Задержка - это время, необходимое для преобразования несжатых, необработанных данных 'UIImage' в формат PNG. Даже если вы хотите записать сырые, несжатые данные 'UIImage', вам все равно нужно записать данные. Сделайте некоторые попытки доступа к данным 'UIImage'. Как только вы узнаете, как получить доступ к этим данным, не так уж сложно записать все эти байты в файл. Но эти файлы будут огромными, и вы можете потратить больше времени на создание большего количества данных. – rmaddy

ответ

1

Чтобы сохранить UIImage в качестве файла в формате изображения, используйте ImageIO framework.

В этом примере я сохранить изображение в директорию приложения поддержки как кальцит (это быстро, потому что сжатие не участвуют):

CGImageSourceRef src = // ... whatever, depends on how you got the image originally 
NSFileManager* fm = [NSFileManager new]; 
NSURL* suppurl = [fm URLForDirectory:NSApplicationSupportDirectory 
          inDomain:NSUserDomainMask 
        appropriateForURL:nil 
           create:YES error:nil]; 
NSURL* tiff = [suppurl URLByAppendingPathComponent:@"mytiff.tiff"]; 
CGImageDestinationRef dest = 
    CGImageDestinationCreateWithURL((__bridge CFURLRef)tiff, 
            (CFStringRef)@"public.tiff", 1, nil); 
CGImageDestinationAddImageFromSource(dest, src, 0, nil); 
bool ok = CGImageDestinationFinalize(dest); 
// error-checking omitted 
CFRelease(src); CFRelease(dest); 
+0

Можете ли вы отредактировать этот ответ с помощью Swift 3? –

+0

@NiravD см. Https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/bk2ch23p829imageIO/ch36p1084imageIO/ViewController.swift – matt

Смежные вопросы