Изменение альфа-канала на основе значений RGB с помощью Accelerate Framework

Можно ли настроить альфа-канал с помощью фреймворка Accelerate на основе значения RGB пикселей?

В частности, я хочу установить для параметра Alpha значение 0, если цвет черный (RGB 0/0/0).


person Erik Aigner    schedule 28.08.2014    source источник


Ответы (1)


Не с ускорением. В CoreGraphics вы можете установить маскирующий цвет, если хотите.

https://developer.apple.com/library/mac/documentation/graphicsimaging/conceptual/drawingwithquartz2d/dq_images/dq_images.html#//apple_ref/doc/uid/TP30001066-CH212-CJBHCADE

Строго говоря, если вы устанавливаете маскирующий цвет для CGImageRef, а затем декодируете его в пиксели с помощью vImageBufer_InitWithCGImage, он должен делать то, что /может/ соответствовать. Однако в этом случае компьютерная графика выполняет работу по маскировке.

Вы можете подать радар с просьбой об этом. До сих пор это не было приоритетом, потому что альфа-канал, который вы получаете, не сглажен.

typedef __attribute__ ((ext_vector_type( 4),__aligned__( 16))) uint32_t uint4;

// ARGB example (on little endian processor):
//   uint4 result = maskByColor( pixels, (uint4)0, (uint4) 0x000000ff );
uint4 maskByColor( uint4 fourPixels, uint4 maskColor, uint4 alphaMask ){
    return fourPixels & ~(maskColor == (fourPixels & ~alphaMask));
}
person Ian Ollmann    schedule 09.09.2014