UIImage drawInrect: сглаживание изображения
Я пытаюсь рисовать изображение с помощью метода UIImage
drawInRect:
. Вот код:
UIImage *image = [UIImage imageNamed:@"OrangeBadge.png"];
UIGraphicsBeginImageContext(image.size);
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Проблема заключается в том, что результирующее изображение размыто. Вот результирующее изображение (справа) по сравнению с исходным изображением (с левой стороны):
![Source image and blurred image]()
Я пробовал как CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), NO)
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), NO)
, но это не решило проблему.
Любые идеи?
Спасибо заранее.
Ответы
Ответ 1
Если вы разрабатываете устройство сетчатки, возможно, проблема связана с разрешением вашего графического контекста. Вы бы попытались:
UIGraphicsBeginImageContextWithOptions(size, NO, 2.0f);
Это позволит разрешить сетчатку. Кроме того, ваше изображение должно быть доступно с разрешением @2x для этого.
Если вы хотите также поддерживать устройства, не содержащие сетчатки, вы можете использовать:
if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0f);
} else {
UIGraphicsBeginImageContext(newSize);
}