В Core Graphics, почему альфа-канал предпочитается быть наиболее значимым? (kCGImageAlphaPremultipliedFirst против kCGImageAlphaPremultipliedLast)
Большая часть кода, который создает растровый контекст, использует kCGImageAlphaPremultipliedFirst
, чтобы создать ARGB, а не kCGImageAlphaPremultipliedLast
создать RGBA. Есть ли причина, по которой ARGB предпочтительнее?
(Использование):
CGBitmapContextCreate(NULL, size.width, size.height, 8, size.width * 4,
colorSpace, kCGImageAlphaPremultipliedFirst);
2 ответа
Я думаю, что это как-то связано с "порядком байтов" используемого процессора.
Вышеупомянутые две константы определяют местоположение альфа-компонента и то, являются ли цветовые компоненты предварительно умноженными. Он может храниться в старших или младших значащих битах каждого пикселя, за исключением того, что обе константы работают одинаково, нет никаких предпочтений по отношению друг к другу с точки зрения производительности.
Для растровых изображений, созданных в iOS 3.2 и более поздних версиях, среда рисования использует предварительно умноженный формат ARGB для хранения растровых данных. Для растровых изображений, созданных в iOS 3.1.x и более ранних версиях, среда рисования использует предварительно умноженный формат RGBA для хранения растровых данных.