Слегка прозрачная белая линия вокруг UIImage после добавления оверлеев? - PullRequest
3 голосов
/ 03 июня 2011

У меня есть функция, которая накладывает изображения на другое изображение и возвращает как UIImage. Тем не менее, на нем появляется белая линия. Вот что у меня есть

- (UIImage * ) romanticFilterImage: (UIImage *) imageA {

UIImage *vintageOne = [UIImage imageNamed:@"filter_vintage_1.png"];
UIImage *vintageTwo= [UIImage imageNamed:@"filter_vintage_2.png"];
UIImage *vintageThree = [UIImage imageNamed:@"filter_vintage_3.png"];

UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageA.size.width, imageA.size.height), YES, 0.0); 
[imageA drawAtPoint: CGPointMake(0,0)];
[vintageThree drawInRect:CGRectMake(0, 0, imageA.size.width, imageA.size.height)  blendMode: kCGBlendModeMultiply alpha: 1.0];
[vintageTwo drawInRect:CGRectMake(0, 0, imageA.size.width + 2, imageA.size.height + 2)  blendMode: kCGBlendModeColorBurn alpha: 1.0];
[vintageOne drawInRect:CGRectMake(0, 0, imageA.size.width, imageA.size.height)  blendMode: kCGBlendModeMultiply alpha: 1.0];
UIImage *source = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext();

CGSize size = [source size];
UIGraphicsBeginImageContext(size);
CGRect rect = CGRectMake(0, 0, size.width, size.height);
[source drawInRect:rect blendMode:kCGBlendModeNormal alpha:1.0];

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 5.0, 5.0, 5.0, 5.0); 
CGContextStrokeRect(context, rect);
UIImage *testImg =  UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return testImg;

}

Вот скриншот: (Я добавил черный фон для улучшения слегка прозрачной границы.

White border!

1 Ответ

3 голосов
/ 03 июня 2011

Разве вы не гладите изображение белым по этим строкам?

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 5.0, 5.0, 5.0, 5.0); 
CGContextStrokeRect(context, rect);
UIImage *testImg =  UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Хотя я не уверен, что вы намеревались GContextSetRGBStrokeColor(context, 5.0, 5.0, 5.0, 5.0);, так как 1.0 - максимальное значение для значений rgba вфункция.

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