Если у вас все в порядке с iOS4 и выше, вам может пригодиться vDSP и ускоренная среда. Ознакомьтесь с документацией о всевозможных достоинствах манипулирования изображениями на скорости деформации.
#import <Accelerate/Accelerate.h>
Я не знаю, что вы будете делать дальше, но если вы выполняете какие-либо вычисления для данных изображения и хотите, чтобы они выполнялись в форме с плавающей запятой, вы можете использовать vDSP_vfltu8 для преобразования одного канала данных исходного байта в с плавающей запятой одинарной точности с использованием одной строки, подобной этой (исключая управление памятью);
vDSP_vfltu8(srcData+0,4,destinationAsFloatRed,1,numberOfPixels)
vDSP_vfltu8(srcData+1,4,destinationAsFloatGreen,1,numberOfPixels)
vDSP_vfltu8(srcData+2,4,destinationAsFloatBlue,1,numberOfPixels)
vDSP_vfltu8(srcData+3,4,destinationAsFloatAlpha,1,numberOfPixels)
Если вам необходимо создать изображение из данных с плавающей запятой, используйте vDSP_vfuxu8, чтобы вернуться другим путем - так;
vDSP_vfixu8(destinationAsFloatRed,1,outputData+0,4,numberOfPixels);
vDSP_vfixu8(destinationAsFloatGreen,1,outputData+1,4,numberOfPixels);
vDSP_vfixu8(destinationAsFloatBlue,1,outputData+2,4,numberOfPixels);
vDSP_vfixu8(destinationAsFloatAlpha,1,outputData+3,4,numberOfPixels);
Очевидно, что вы можете просто обработать 1 или 2 канала, используя вышеописанную технику.
Документация довольно сложная, но результаты хорошие.