Tengo una imagen en escala de grises que quiero usar para dibujar los controles Cocoa. La imagen tiene varios niveles de gris. Donde sea más oscuro, quiero que dibuje un color de tinte específico más oscuro. Quiero que sea transparente donde la imagen de origen es blanca.Tinte de un NSImage (o CIImage) en escala de grises
Básicamente, quiero reproducir el comportamiento de tintColor visto en UINavigationBar en el iPhone.
varias opciones Hasta ahora, he explorado:
dibujar el color de la tinta sobre la imagen en escala de grises utilizando la composición SourceOver -> Esto requiere un color de tinte no opaca -> El resultado sale mucho más oscuro de lo deseado
Utilice un CIMultiplyCompositing CIFilter para teñir la imagen -> no puedo [CIImage drawAtPoint: fromRect: operación: fracción:] para extraer sólo una parte de la imagen. Lo mismo funciona bien con NSImage -> Obtengo caídas ocasionales que no tienen sentido
Transforma la imagen en escala de grises en una máscara. Es decir. El negro debe ser opaco. Blanco debe ser transparente. Gray debe tener valores alfa intermedios. -> Esta parece ser la mejor solución -> Por más que lo intente, no puedo lograrlo.
He decidido hacer el tinte y el recorte en dos pasos sucesivos. CIMultiplyCompositing funciona bien siempre que dibuje toda la imagen. Dibujo un NSImage, que a su vez dibujo parcialmente en una imagen más pequeña. –