Подтвердить что ты не робот

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), но это не решило проблему.

Любые идеи?

Спасибо заранее.

4b9b3361

Ответ 1

Если вы разрабатываете устройство сетчатки, возможно, проблема связана с разрешением вашего графического контекста. Вы бы попытались:

UIGraphicsBeginImageContextWithOptions(size, NO, 2.0f);

Это позволит разрешить сетчатку. Кроме того, ваше изображение должно быть доступно с разрешением @2x для этого.

Если вы хотите также поддерживать устройства, не содержащие сетчатки, вы можете использовать:

if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0f);
} else {
    UIGraphicsBeginImageContext(newSize);
}