2 Stimmen

Was ist der Unterschied zwischen einer CGImageRef, die eine Maske ist, und einer, die keine Maske ist?

Ich habe entdeckt, dass CGBitmapContextCreateImage() erzeugt ein Bild, das nicht notwendigerweise immer eine Maske ist, die mit CGContextClipToMask() . Bei der Verwendung von CGImageMaskCreate() ist die CGImageRef jedoch immer eine Maske, die mit CGContextClipToMask() . Was ist nun so besonders an der Maske im Vergleich zum "normalen" Bild?

Meine Vermutung ist, dass die Maske nur Graustufen ist, wo als eine CGImageRef erstellt mit CGBitmapContextCreateImage() können RGBA-Werte haben, die irritieren CGContextClipToMask() . Ich konnte in der Dokumentation keine Stelle finden, an der der genaue Unterschied zwischen Masken und CG-Bildern erklärt wird.

Aber es scheint, dass ein Core Graphics-Bild != eine Maske ist, während eine Maske == ein Core Graphics-Bild ist.

2voto

hooleyhoop Punkte 9087

Jeder Wert in einem Bild, sei es RGB, CMYK oder Graustufen, stellt eine Position in einem bestimmten Farbraum dar. Es ist sinnvoll zu fragen: "Was wäre dieser Wert im Farbraum 'x'?" - und das Ergebnis wäre, wenn möglich, die gleiche Farbe, könnte aber auch ein anderer numerischer Wert sein.

z. B. (vereinfacht). Ein Pixel mit dem Wert (255,255,255) ist in einem RGB-Farbraum Weiß, aber in einem (hypothetischen) CMY-Farbraum Schwarz. Die Konvertierung des weißen RGB-Pixels in den CMY-Farbraum würde den Wert (0,0,0) ergeben. Mit anderen Worten: Ein Bild muss einen Farbraum haben, es macht nur Sinn, wenn es einen Farbraum hat.

Im Gegenteil, eine 8-Bit-Maske stellt absolute Werte zwischen 0 und 255 dar. Es gibt keinen Farbraum und es macht keinen Sinn, sich eine Maske in einem bestimmten Farbraum vorzustellen.

In dieser Hinsicht unterscheiden sich Bilder und Masken grundlegend, auch wenn wir uns Masken oft als Graustufenbilder vorstellen.

0voto

Alexander B Punkte 407

Eine Bildmaske in Core Graphics ist eine besondere Art von Bild. Von der CGImageMaskCreate Hinweis:

Eine Quartz-Bitmap-Bildmaske wird auf die gleiche Weise verwendet, wie ein Künstler einen Siebdruck oder ein Schildermaler eine Schablone verwendet. Die Bitmap stellt eine Maske dar, durch die eine Farbe übertragen wird. Die Bitmap selbst hat keine Farbe. Sie erhält ihre Farbe von der Füllfarbe, die derzeit im Grafikstatus eingestellt ist.

Wenn Sie in einen Kontext mit einer Bitmap-Bildmaske zeichnen, verwendet Quartz die Maske, um zu bestimmen, wo und wie die aktuelle Füllfarbe auf das Bildrechteck angewendet wird. Jeder Musterwert in der Maske gibt an, wie viel der aktuellen Füllfarbe an einer bestimmten Stelle ausgeblendet wird. Der Musterwert gibt also die Deckkraft der Maske an. Größere Werte stehen für eine höhere Deckkraft und damit für weniger auf die Seite aufgetragene Farbe.

Sehen Sie hier mehr: http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGImage/Reference/reference.html

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X