gpt4 book ai didi

ios - 使用蒙版裁剪图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:08 26 4
gpt4 key购买 nike

我的要求是使用 maskImage 裁剪图像。我能够裁剪图像,但不能按预期的精确比例裁剪。我用谷歌搜索并尝试实现它,但不幸的是没有得到预期的结果。这就是裁剪图像后得到的结果。

Before cropping

After cropping以下是我正在使用的代码。

- (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;
}

谢谢..!!

最佳答案

另一种选择

您也可以使用 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 的大小:

mask.frame = image.bounds;

关于ios - 使用蒙版裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com