У меня есть представление с UIImageView и установленным для него изображением. Я хочу стереть изображение, как мы это делаем в фотошопе с помощью ластика. Как мне этого добиться? Кроме того, как отменить стирание?
Как стереть часть изображения UIImageView на iOS?
Ответы (2)
Если вы знаете, какую область вы хотите стереть, вы можете создать новое изображение того же размера, установить маску на полное изображение за вычетом области, которую вы хотите стереть, нарисовать полное изображение в новом изображении и использовать его в качестве основы. новое изображение. Чтобы отменить, просто используйте предыдущее изображение.
Изменить
Образец кода. Скажем, область, которую вы хотите удалить из представления изображения imgView
, указана с помощью erasePath
:
- (void) clipImage
{
UIImage *img = imgView.image;
CGSize s = img.size;
UIGraphicsBeginImageContext(s);
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,erasePath);
CGContextAddRect(g,CGRectMake(0,0,s.width,s.height));
CGContextEOClip(g);
[img drawAtPoint:CGPointZero];
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
person
Ed Marty
schedule
28.09.2009
Спасибо за пример кода, но в CGContextAddPath(g,erasePath); Как получить путь стирания? Пожалуйста помогите.
- person Dhaval Panchal; 16.01.2012
Привет, @RahulVyas, @Dhaval, @Ed Marty, не могли бы вы рассказать мне, как вы получаете ErasePath, если у вас есть ..
- person jillu_; 30.08.2012
Вот как получить erasePath. Просто передайте выбранный CGRect, который вы хотите обрезать, как cropRect - CGMutablePathRef erasePath = CGPathCreateMutable(); CGPathAddRect(erasePath, NULL, cropRect); CGContextAddPath(г,путь стирания);
- person Sean; 08.12.2013
Версия Swift 5.2
UIGraphicsBeginImageContextWithOptions(imageView.frame.size, false, 1.0)
let currentContext = UIGraphicsGetCurrentContext()
currentContext?.addPath(shapeLayer.path!)
currentContext?.addRect(CGRect(x: 0, y: 0, width: imageView.frame.size.width, height: imageView.frame.size.height))
currentContext?.clip(using: .evenOdd)
imageView.image?.draw(at: .zero)
let imageTeemp = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext()
person
Prashant Tukadiya
schedule
05.02.2021