Если вы хотите отобразить в памяти закодированные данные изображения, затем отформатируйте файл и предоставьте ссылку на данные, передав CGDataProviderRef в CGImageCreate.
mapped = mmap( NULL , length , ... );
provider = CGDataProviderCreateWithData( mapped , mapped , length , munmap_wrapper );
image = CGImageCreate( ... , provider , ... );
uiimage = [UIImage imageWithCGImage:image];
...
Где munmap_wrapper что-то вроде этого:
// conform to CGDataProviderReleaseDataCallback
void munmap_wrapper( void *p , const void *cp , size_t l ) { munmap( p , l ); }
Если вы хотите отобразить в памяти фактические пиксели, а не закодированные исходные данные, вы должны сделать что-то похожее с CGBitmapContext.Вы также должны создать провайдера и изображение, чтобы изображение ссылалось на те же пиксели, что и контекст.Все, что нарисовано в контексте, будет содержанием изображения.Ширина, высота, цветовое пространство и другие параметры должны быть идентичны для контекста и изображения.
context = CGBitmapContextCreate( mapped , ... );
В этом случае длина будет составлять не менее bytes_per_row * высота байт, поэтому файл должен быть как минимум такого большого размера.
Если у вас есть существующее изображение и вы хотите отобразить пиксели, то создайте растровый контекст с размером и цветовым пространством вашего изображения и используйте CGContextDrawImage, чтобы нарисовать изображение в контексте.
Вы не сказали источник своего изображения, но если вы создаете его во время выполнения, было бы эффективнее создать его непосредственно в контексте растрового изображения.Любое создание изображения требует растрового контекста за кулисами, так что это также может быть отображение памяти с самого начала.