我的要求是使用maskImage裁剪图像。我能够裁剪图像,但不是在确切的比例如预期。我在谷歌上搜索并试图实现它,但不幸的是没有得到结果,因为expected.This是裁剪图像后得到的结果。


下面是我使用的代码。
- (UIImage*) maskImage1:(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;
}谢谢..!
发布于 2013-12-06 18:34:30
备用
使用CALayers也可以达到同样的效果,在我看来,这一点很明显。
- (UIImage*) maskImage1:(UIImage *) image withMask:(UIImage *) mask
{
UIImage* maskedImage = image;
CALayer *maskLayer = [CALayer layer];
maskLayer.frame = maskedImage.bounds;
maskLayer.contents = (__bridge id) mask.CGImage;
maskedImage.layer.mask = maskLayer;
return maskedImage;
}可能是一个解决方案
您的掩码UIImage的contentScale可能是错误的
mask.layer.contentScale = [UISCreen mainScreen].scale;您还可以在执行CGImageMaskCreate之前强制设置蒙版的大小:
mask.frame = image.bounds;发布于 2015-01-17 21:40:07
也许你已经解决了这个问题,但由于我遇到了同样的问题,我解决了它,我将解释解决方案:蒙版应用于照片的真实大小,在我的例子中是3264x2448,逻辑上它不是iphone屏幕大小,所以当蒙版应用到图像上时,它变得非常小。我解决了在photoshop上创建一个3264x2448大小的图层,并缩放蒙版以保持与iphone屏幕完全相同的方式。
我遇到的另一个问题是,当我拍摄照片时(我正在使用相机),图像有另一个方向,然后我必须将蒙版转到这个photoshop图层上图片的相同方向。修改方向会改变边,现在的高度是宽度,反之亦然,所以,当我必须计算比例时,我必须注意哪一边应该相乘以获得正确的比例。
https://stackoverflow.com/questions/20421323
复制相似问题