Я пытаюсь объединить две фотографии в одно изображение (представьте себе тело с дырой в лице поверх изображения лица другого человека).
Верхнее изображение имеет несколько полупрозрачных пикселей и несколько полностью прозрачных пикселей, и я хочу наложить его поверх твердого изображения.
Вот что я делаю:
У меня есть контекст с правильным размером, и я рисую нижнее изображение на нем, без какой-либо альфа (faceImage).
Кроме того, я рисую изображение с прозрачной дырой с различными уровнями прозрачности (coverImage):
UIGraphicsBeginImageContext(view.bounds.size);
[faceImage drawAtPoint:CGPointMake(0, 0) blendMode:kCGBlendModeNormal alpha:1];
[coverImage drawAtPoint:CGPointMake(0, 0) blendMode:kCGBlendModeNormal alpha:1];
UIImage *combinedImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Результаты на финальном изображении довольно неожиданны:
В пикселях, где верхнее изображение не имеет прозрачности , окончательное изображение сохраняется должным образом и показывает пиксель из верхнего изображения. ( OK )
В пикселях, где верхнее изображение имеет полную прозрачность , окончательное изображение сохраняется должным образом и показывает пиксель из нижнего изображения. ( OK )
В пикселях, где верхнее изображение имеет полупрозрачные пиксели, а яркость очень мала (яркость конечного пикселя) я неожиданно получаю полностью прозрачных пикселей (вместо конечный пиксель без прозрачности - это смесь верхнего пикселя и нижнего пикселя). (WTF?)
На изображении ниже вы можете увидеть странные пятна белого цвета. Это пиксели, которые стали полностью прозрачными (через них вы видите белый фон):
Это изображение, которое я помещаю сверху:
Это изображение лица внизу:
Есть идеи, что может быть причиной этого?
ТИА