Мне нужно сделать UIImageView
поддерживает увеличение/уменьшение масштаба, и самое главное, когда изображение увеличивается, в нем должны быть видны прозрачные и большие пиксели, но не эффект нечеткой обработки, как изображения ниже.Как увеличить UIImage для очистки пикселей без размытия в iOS?
Это должно быть так:
Не должно быть так:
Мой код не работает:
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
imageView = [[ColorPickImageView alloc] initWithImage:self.image];
imageView.contentMode = UIViewContentModeScaleAspectFit;
[self addGestureRecognizerToView:imageView];
[imageView setUserInteractionEnabled:YES];
[imageView setMultipleTouchEnabled:YES];
[self.view addSubview:imageView];
[imageView setTranslatesAutoresizingMaskIntoConstraints:NO];
NSDictionary *views = NSDictionaryOfVariableBindings(imageView);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[imageView]-0-|" options:0 metrics:nil views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[imageView]-0-|" options:0 metrics:nil views:views]];
}
- (void)addGestureRecognizerToView:(UIView *)view
{
UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)];
[view addGestureRecognizer:pinchGestureRecognizer];
}
- (void)pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
UIView *view = pinchGestureRecognizer.view;
if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {
view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);
pinchGestureRecognizer.scale = 1;
}
}
Возможный дубликат: http: //stackoverflow.com/questions/22853863/in-ios-how-do-you-preserve-sharp-edges-when-enlarging-a-bitmap и http: // stackoverflow .com/вопросы/27188456/как к предотвращению-на-пиксели-от-став-размыто-когда-я-увеличить-ан-образ-в-моих-цв. На самом деле, последний из тех же OP и уже имеет ответ – fishinear
Спасибо, первая тема достигает моей цели, но я хочу спросить, когда я использую 'magnificationFilter = kCAFilterNearest', большие и резкие пиксели увеличены на самом деле исходные пиксели изображения или просто созданные некоторыми обработками? Спасибо! – Suge
afaik, kCAFilterNearest не производит никаких пикселей. Все, что вы видите, происходит из исходной картины. – fishinear