Можно ли настроить альфа-канал с помощью фреймворка Accelerate на основе значения RGB пикселей?
В частности, я хочу установить для параметра Alpha значение 0
, если цвет черный (RGB 0/0/0
).
Можно ли настроить альфа-канал с помощью фреймворка Accelerate на основе значения RGB пикселей?
В частности, я хочу установить для параметра Alpha значение 0
, если цвет черный (RGB 0/0/0
).
Не с ускорением. В CoreGraphics вы можете установить маскирующий цвет, если хотите.
Строго говоря, если вы устанавливаете маскирующий цвет для 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));
}