有没有办法擦除该图像的黑色背景
我在topic找到了此示例代码,但我不明白它是如何工作的
- (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();
}
也许我的方式错了。
的问候,
kl94
答案 0 :(得分:4)
代码使用石英(iPhone的图形引擎)剪辑图像。一些细节:
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();
现在,您只需要让系统返回您在上面设置的上下文(目标)中绘制的图像
注意:这是一个粗略的描述,您可能希望查看每个函数的参考以获取更多详细信息。
答案 1 :(得分:0)
以下是获取“erasePath”的方法。只需将要裁剪的选定CGRect传递为“cropRect” -
CGMutablePathRef erasePath = CGPathCreateMutable();
CGPathAddRect(erasePath, NULL, cropRect);
CGContextAddPath(g,erasePath);