我现在是这个代码,用来在我的图像上创建一个掩码。
- (UIImage*) maskImage:(UIImage *) image withMask:(UIImage *) mask
{
CGImageRef imageReference = image.CGImage;
CGImageRef maskReference = mask.CGImage;
CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference),
CGImageGetHeight(maskReference),
CGImageGetBitsPerComponent(maskReference),
CGImageGetBitsPerPixel(maskReference),
CGImageGetBytesPerRow(maskReference),
CGImageGetDataProvider(maskReference),
NULL, // Decode is null
YES // Should interpolate
);
CGImageRef maskedReference = CGImageCreateWithMask(imageReference, imageMask);
CGImageRelease(imageMask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
CGImageRelease(maskedReference);
return maskedImage;
}现在,我想在蒙面输出(如源url)周围添加一个两点边框。知道我怎么能做到这一点吗?
谢谢!
发布于 2014-03-18 08:52:52
请参考下面的链接,我也想实现同样的。
请查找以下代码:
- (UIImage*)mergeImage:(UIImage*)first withImage:(UIImage*)second
{
// get size of the second image
CGImageRef secondImageRef = second.CGImage;
CGFloat secondWidth = CGImageGetWidth(secondImageRef);
CGFloat secondHeight = CGImageGetHeight(secondImageRef);
float offsetwt,offsetht,offset;
offset=20;
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
offset=offset/2;
}
offsetht=(secondHeight * (secondWidth+offset)) /secondWidth;
offsetwt=secondWidth+offset;
// build merged size
CGSize mergedSize = CGSizeMake(offsetwt,offsetht);
// capture image context ref
UIGraphicsBeginImageContext(mergedSize);
//Draw images onto the context
[first drawInRect:CGRectMake(0, 0, offsetwt, offsetht)];
[second drawInRect:CGRectMake(offset/2, offset/2, secondWidth, secondHeight) blendMode:kCGBlendModeNormal alpha:1.0];
// assign context to new UIImage
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
// end context
UIGraphicsEndImageContext();
return newImage;
}第一个参数,用于掩蔽的图像,第二个参数是蒙面图像。您可以根据您的要求设置偏移量。希望这能帮到你。
发布于 2014-03-18 07:46:28
至少有两种选择:
UIBezierPath,然后从该路径创建两个CAShapeLayer对象,一个用于隐藏图像视图,另一个用于添加边框:
路径*path = UIBezierPath bezierPath;路径radius:self.view.bounds.size.width / 2.0,self.view.bounds.size.height / 2.0) radius:self.view.bounds.size.width* 0.4开始角:0 endAngle:M_PI * 2.0顺时针方向:是;CAShapeLayer *掩蔽层= CAShapeLayer层;mask.path = path.CGPath;mask.fillColor = [UIColor blackColor CGColor];self.imageView.layer.mask =掩码;CAShapeLayer *En19#;border.strokeColor = [UIColor blueColor CGColor];border.fillColor = [UIColor clearColor CGColor];border.lineWidth = 10.0;self.imageView.layer addSublayer:边界
这是一个例子,其中的路径是一个简单的圆圈,但你可以创建一个心形的路径或任何东西。Bezier路径需要一段时间才能适应,但是它们对于绘制光滑的曲线非常有效。底线,如果边框有一些规则的形状,我可以用bezier曲线生成,我更喜欢第二种方法。如果边框是在我的图像编辑工具中手动绘制的,那么我将使用第一种方法。
https://stackoverflow.com/questions/22472651
复制相似问题