iPhone SDK инвертирует цвета UIImage - PullRequest
4 голосов
/ 15 февраля 2010

У меня есть приложение для iPhone, которое позволяет человеку рисовать что-то на экране пальцем. Они рисуют с белой линией на черном фоне. Однако когда я загружаю это изображение на веб-сервер, сама строка становится белой. Я пытался проработать основные графические библиотеки в поисках способа инвертировать цвет нарисованного изображения. Нет заданного фона, поэтому он должен быть прозрачным. Инвертирование изображения должно поменять местами белый на черный.

Кто-нибудь знает, возможно ли это через базовую графическую библиотеку?

Приветствия

Ответы [ 2 ]

14 голосов
/ 15 февраля 2010

В итоге я нашел хороший способ сделать это. Вместо того, чтобы просто сделать фон исходного изображения прозрачным, я делаю его черным. Теперь есть белые линии на черном фоне. Тогда это было просто делом:

UIGraphicsBeginImageContext(image.size);
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeCopy);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeDifference);
CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(),[UIColor whiteColor].CGColor);
CGContextFillRect(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height));
UIImage *returnImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Переменная 'изображение' - это исходное изображение с белой линией на черном фоне. Спасибо за вашу помощь Дэвид Соуси

0 голосов
/ 15 февраля 2010

Да. Вы должны быть в состоянии сделать это в CALayer с помощью вызовов CGContext или непосредственно с буфером на CGImage. Есть и другие примеры того, как переходить назад и вперед с сохранением изображения из UIView также в Stackoverflow.

...