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