2011-03-14 3 views
2

Je commence tout juste à apprendre à propos de Quartz Composer et la première chose que j'aimerais créer est une composition qui pourrait éventuellement être utilisée dans une application Cocoa qui accepterait une image en noir et blanc et deux NSColor et changer les pixels noirs à NSColor # 1 et les pixels blancs à NSColor # 2.QC Composition qui convertira les pixels noirs et blancs en deux autres couleurs

J'ai passé du temps à jouer avec QC, mais n'arrive pas à comprendre comment assembler toutes les pièces. La seule chose que j'ai compris est que j'ai besoin d'utiliser le modèle de filtre d'image et je vois qu'il y a un patch Image Pixel qui peut obtenir des pixels d'une image ... mais je ne vois pas patch pour définir un pixel. Il semble aussi possible que le patch Pixellate soit nécessaire ... bien que, je ne devrais pas avoir à m'inquiéter à ce sujet produisant une image avec des dimensions infinies puisque mes images de source ne seront fixées que des images PNG de taille.

Répondre

1

Regardez le patch False Color - il prend une image et la remappe avec une paire de couleurs.

En fait, puisque le patch False Color est juste un emballage autour du filtre à Core Image avec le même nom (CIFalseColor), vous pouvez le faire sans impliquer Quartz Composer à tout --- mettre en place et appliquer une CIFilter par exemple à votre NSImage.

Modifier - ou écrire votre propre filtre Core Image, à commencer par quelque chose comme ceci:

kernel vec4 remapBasedOnRed(sampler image,__color colorForDark,__color colorForLight) 
{ 
    return mix(colorForDark,colorForLight,sample(image, samplerCoord(image)).r); 
} 

... qui prend la luminosité du canal rouge de l'image d'entrée (sample(image, samplerCoord(image)).r), et utilise comme un coefficient d'interpolation linéaire entre colorForDark et colorForLight.

+1

Merci. Je devrai regarder dans CIFalseColor plus en détail. Cependant, je serais toujours intéressé à apprendre comment écrire essentiellement le patch False Color à partir de zéro ... si c'est possible. Je pense que cela pourrait être un bon moyen d'apprendre des techniques intéressantes. Si ce n'est pas possible, ce serait tout aussi intéressant. – ericg

+0

+1 pour la suggestion "écrivez votre propre filtre d'image de base". Vous n'êtes pas susceptible de pouvoir créer une composition de contrôle qualité où la composition elle-même transforme chaque pixel individuel. (Bien, cela pourrait être possible, mais ce ne sera pas efficace.) Si vous voulez transformer des images, vous devez utiliser des patches qui prennent des images en entrée et produisent des images en sortie. S'il n'y a pas un patch qui fait ce que vous voulez, alors il n'est pas trop difficile de l'écrire comme un filtre Core Image. –

Questions connexes