В чем разница между CGImageRef, который является маской, и тем, который не является маской? - PullRequest
2 голосов
/ 13 июня 2011

Я обнаружил, что CGBitmapContextCreateImage() создает изображение, которое не всегда является маской, совместимой с CGContextClipToMask(). Но при использовании CGImageMaskCreate () CGImageRef всегда является маской, которая работает с CGContextClipToMask(). Теперь, что такого особенного в маске VS. «нормальное» изображение?

Я предполагаю, что маска только в градациях серого, где CGImageRef, созданный с CGBitmapContextCreateImage(), может иметь значения RGBA, которые раздражают CGContextClipToMask(). Я не смог найти место в документации, где объясняется точная разница между масками и изображениями компьютерной графики.

Но похоже, что изображение Core Graphics! = Маска, а маска == изображение Core Graphics

Ответы [ 2 ]

2 голосов
/ 09 октября 2011

Каждое значение в изображении, будь то RGB, CMYK или Greyscale, представляет позицию в определенном цветовом пространстве.Имеет смысл задать вопрос: «Что бы это значение было в цветовом пространстве« х »?»- и результат будет, если возможно, одного цвета, но может иметь другое числовое значение.

например (упрощенно).Пиксель со значением (255,255,255) - это белый в цветовом пространстве RGB, но черный в (гипотетическом) цветовом пространстве CMY.Преобразование белого RGB-пикселя в цветовое пространство CMY даст значение (0,0,0).Другими словами, изображение должно иметь цветовое пространство, оно имеет смысл только с учетом цветового пространства.

Напротив, 8-битная маска представляет абсолютные значения в диапазоне 0-255.Нет цветового пространства, и нет смысла думать о маске в конкретном цветовом пространстве.

Таким образом, изображения и маски принципиально отличаются, хотя мы часто думаем о масках как изображения в оттенках серого.

0 голосов
/ 09 октября 2011

Маска изображения в Core Graphics - это особый вид изображения. От CGImageMaskCreate ссылка:

Кварцевая маска растрового изображения используется так же, как художник использует шелкографию, или художник по знакам использует трафарет. Растровое изображение представляет маску, через которую передается цвет. Сам растровое изображение не имеет цвета. Он получает свой цвет от цвета заливки, установленного в данный момент в графическом состоянии.

Когда вы рисуете в контексте с маской растрового изображения, Quartz использует маску, чтобы определить, где и как текущий цвет заливки применяется к прямоугольнику изображения. Каждое значение выборки в маске указывает, какая часть текущего цвета заливки маскируется в определенном месте. Фактически, значение образца определяет непрозрачность маски. Большие значения представляют большую непрозрачность и, следовательно, меньше цвета применяется к странице.

Подробнее здесь: http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CGImage/Reference/reference.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...