Любой способ кодировать PNG быстрее, чем UIImagePNGRepresentation?
Я генерирую кучу плиток дляCATiledLayer
, На iPhone 4S требуется около 11 секунд, чтобы сгенерировать 120 плиток с разрешением 256 x 256 и 4 уровнями детализации. Само изображение умещается в пределах 2048 х 2048.
Мое узкое местоUIImagePNGRepresentation
, Генерация каждые 256 x 256 изображений занимает около 0,10-0,15 секунды.
Я попытался сгенерировать несколько плиток в разных фоновых очередях, но это сокращает их до 9-10 секунд.
Я также попытался использовать среду ImageIO с кодом, подобным этому:
- (void)writeCGImage:(CGImageRef)image toURL:(NSURL*)url andOptions:(CFDictionaryRef) options
{
CGImageDestinationRef myImageDest = CGImageDestinationCreateWithURL((__bridge CFURLRef)url, (__bridge CFStringRef)@"public.png", 1, nil);
CGImageDestinationAddImage(myImageDest, image, options);
CGImageDestinationFinalize(myImageDest);
CFRelease(myImageDest);
}
В то время как при этом создаются файлы PNG меньшего размера (победа!), Это занимает около 13 секунд, на 2 секунды больше, чем раньше.
Есть ли способ кодировать изображение PNG изCGImage
Быстрее? Возможно, библиотека, которая используетNEON
ARM расширение (iPhone 3GS +), какlibjpeg-турбо делает?
Есть ли лучший формат, чем PNG, для сохранения тайлов, который не занимает много места?
Единственный приемлемый вариант, который мне удалось найти, - это увеличить размер плитки до 512 x 512. Это сокращает время кодирования вдвое. Не уверен, что это будет делать с моим видом прокрутки, хотя. Приложение предназначено для iPad 2+ и поддерживает только iOS 6 (в качестве базовой линии используется iPhone 4S).