gpt4 book ai didi

iphone - 图像 mask +Iphone SDK

转载 作者:太空狗 更新时间:2023-10-30 03:54:57 26 4
gpt4 key购买 nike

我想屏蔽两张图片

图 1:

enter image description here

图 2:

enter image description here

现在我想合并这两个图像,例如图像 2 将位于图像 1 的中心。

我读过 Any idea why this image masking code does not work?"How to Mask an Image"

但是在使用这个函数时:-

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);

CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
return [UIImage imageWithCGImage:masked];
}

但是通过使用这个函数我得到的输出是:-

enter image description here

最佳答案

据我所知,问题不在于 maskImage:withMask:。您发布的错误输出并没有错:image1 的像素为黑色,image2 不可见。

问题可能出在您用于加载 imagemask 的函数中,或者出在生成图形输出的代码中。实际上在我看来你得到了正确的输出,但是使用了错误的色彩空间(没有 alpha 的灰度)。检查您提供的参数 image 是否实际上是 RGBa 格式,以及返回的 UIImage 是否未使用 DeviceGray 绘制到其他一些 CGContext 上色彩空间。

我想到的另一个可能原因是您颠倒了 image1 和 image2。根据文档,mask 应该按比例放大到 image 的大小(见下文),但那里的图像很小。这似乎也是合理的,因为 image1 是灰度的,尽管当我尝试交换 image1 和 image2 时,我得到的是未修改的 image1 作为输出。


为了运行测试,我使用了附加的图像,然后按原样复制并粘贴方法 -(UIImage *)maskImage:(UIImage *)image withMask:(UIImage *)maskImage

我使用了一个简单的 iOS 项目,其中包含一个 View 和一个 UIImageView 内部(带有标签 1),以及 Controller 中的以下代码:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

UIImageView *imageView=(UIImageView *)[self.view viewWithTag:1];

UIImage *im1=[UIImage imageNamed:@"image1"];
UIImage *im2=[UIImage imageNamed:@"image2"];

imageView.image=[self maskImage:im2 withMask:im1];

}

我得到以下输出(正确):

image2 using image1 as mask

如果您不小心将 im1 与 im2 反转,则会得到未修改的 image1。

关于iphone - 图像 mask +Iphone SDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8488062/

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