Как предотвратить размывание пикселей при увеличении изображения в проекте выбора цвета для iOS?

Я делаю небольшой проект, который предоставляет возможность увеличить изображение и выбрать цвета пикселей из лупы, теперь я могу увеличить место прикосновения изображения, но лупа показывает пиксели с размытым эффектом, как я могу сделать это показать пиксели один за другим очень четко, без какой-либо нечеткой обработки?

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGRect bounds = self.bounds;
    CGImageRef mask = [UIImage imageNamed: @"loupe-mask@2x.png"].CGImage;
    UIImage *glass = [UIImage imageNamed: @"loupe-hi@2x.png"];

    CGContextSaveGState(context);
    CGContextClipToMask(context, bounds, mask);
    CGContextFillRect(context, bounds);
    CGContextScaleCTM(context, 40, 40);

    //draw your subject view here
    CGContextTranslateCTM(context,1*(self.frame.size.width*0.5),1*(self.frame.size.height*0.5));
    //CGContextScaleCTM(context, 1.5, 1.5);
    CGContextTranslateCTM(context,-1*(touchPoint.x),-1*(touchPoint.y));
    [self.viewToMagnify.layer renderInContext:context];

    CGContextRestoreGState(context);
    [glass drawInRect: bounds];
}

Должно быть:

Не должно быть:

1 ответ

Решение

Вы хотите установить режим рисования, который масштабирует пиксели, а не интерполирует. Я думаю, что для рисования, которое вы делаете, вам нужна команда CGContext CGContextSetInterpolationQuality со значением kCGInterpolationNone.

(Отказ от ответственности: я думаю, что это настройка, но я не уверен, и не пробовал.)

Кстати, на этом сайте, вероятно, лучше избегать изображений, которые могут быть близки к NSFW. Этот сайт читают по всему миру, и я уверен, что многие люди читают его на работе. Разные рабочие места имеют совершенно разные стандарты того, что приемлемо. Ваше примерное изображение довольно рискованно.

Другие вопросы по тегам