Има ли API, който мога да използвам (може би в coreimage), за да променя всички пиксели от определен цвят в друг цвят? Мисля, че мога да разбера как да го направя ръчно, като итерирам през всеки пиксел от изображението, но се надявам, че има по-елегантен (и с по-висока производителност) начин да се постигне това.
Заменете цвета в uiimage с друг цвят
comment
stackoverflow.com/questions/12872680/changing-uiimage-color и stackoverflow.com/questions/12396236/
- person iPatel   schedule 28.03.2014
comment
stackoverflow.com /questions/12396236/
- person Arun   schedule 28.03.2014
comment
Благодаря, но вече бях виждал тези теми, преди да публикувам и нито една от тях не е точно това, което имах предвид. Първият е използването на изображението като маска, което е същото като предложението по-долу от Kirit. Второто е ръчно повторение през всеки пиксел. Не е ли тук по-ефективен начин да направите това, който използва GPU?
- person Dave   schedule 28.03.2014
Отговори (2)
цветът на вашето изображение се заменя с червен цвят в кода по-долу
Кодът на вашето оригинално изображение:
UIImageView *image1 =[[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
[image1 setImage:[UIImage imageNamed:@"Lock.png"]];
[self.view addSubview:image1];
Код на цветно изображение на Rad
CGRect rect = CGRectMake(0, 0, image1.frame.size.width, image1.frame.size.height);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClipToMask(context, rect, [UIImage imageNamed:@"Lock.png"].CGImage);
CGContextSetFillColorWithColor(context, [[UIColor redColor] CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImage *flippedImage = [UIImage imageWithCGImage:img.CGImage
scale:1.0 orientation: UIImageOrientationDownMirrored];
image1.image = flippedImage;
Оригинално изображение
Изображение в червен цвят
person
Kirit Modi
schedule
28.03.2014
Благодаря. Може да успея да разделя изходното си изображение на няколко маскиращи изображения и след това да използвам този код, за да направя това, което искам, но това не е точно това, което имах предвид. Търся метод като: changeColor(UIImage* img, UIColor* fromColor, UIColor* toColor), който мога да използвам, за да променя например цялото синьо в изображение на американско знаме в зелено.
- person Dave; 28.03.2014
бялата секция е прозрачна, така че кодът променя синьото на червено. но дали бялата секция е UIColor бяло... изображението ще стане червено.....
- person Sage; 10.12.2014
Трябва да можете да използвате филтъра за основно изображение CIColorCube за това. Не съм го използвал преди, но вярвам, че ви позволява да картографирате диапазони от входни цветове към различни изходни цветове.
person
Duncan C
schedule
03.04.2014
Ето пример за това как да направите това, което @Duncan спомена в Swift. stackoverflow.com/a/32638622/1807644
- person William T.; 17.09.2015