Как загрузить 16-битные изображения с UIImage? - PullRequest
1 голос
/ 02 марта 2012

Я собираюсь оптимизировать использование памяти моего приложения.Мое приложение имеет много пользовательских интерфейсов с графикой, которые занимают большую часть памяти устройства.

Я пытался использовать 16-битные изображения вместо 32-битных.Потребление памяти моих текстур OpenGL уменьшается.Однако я обнаружил, что изображения, хранящиеся в UIImage, занимают столько же памяти, сколько 32-битные изображения.

Использует ли UIImage 8 бит на пиксель для хранения изображений, независимо от того, какой формат пикселя - 16 или 32 бита?Или что я могу сделать, чтобы уменьшить потребление памяти на 16 бит изображениях?

Большое спасибо.

1 Ответ

1 голос
/ 02 марта 2012

Вы можете использовать провайдера cgdata

CGDataProviderRef imgDataProvider = CGDataProviderCreateWithCFData((CFDataRef)[NSData dataWithContentsOfFile:@"some_file.png"]);

, а затем используйте

CGImageRef CGImageCreate (
   size_t width,
   size_t height,
   size_t bitsPerComponent,
   size_t bitsPerPixel,
   size_t bytesPerRow,
   CGColorSpaceRef colorspace,
   CGBitmapInfo bitmapInfo,
   CGDataProviderRef provider,
   const CGFloat decode[],
   bool shouldInterpolate,
   CGColorRenderingIntent intent
);

функция, устанавливающая все соответствующие значения для размеров, бит на пиксель и использующая поставщика данных, созданный на первом шаге.

Затем получите UIImage из CGImageRefs с помощью метода [UIImage imageWithCGImage:].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...