Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IOS:掩蔽图像,考虑视网膜比例因子_Ios_Uiimage_Core Graphics_Cgimage - Fatal编程技术网

IOS:掩蔽图像,考虑视网膜比例因子

IOS:掩蔽图像,考虑视网膜比例因子,ios,uiimage,core-graphics,cgimage,Ios,Uiimage,Core Graphics,Cgimage,我想通过传递另一个图像作为遮罩来遮罩一个图像。我可以遮罩图像,但生成的图像看起来不太好。它的边界参差不齐 我想这个问题与视网膜图形有关。两个图像的缩放特性不同,如下所示: 要遮罩的图像的比例值为1。此图像的分辨率通常大于1000x1000像素 我希望生成的图像(仅具有黑白颜色的图像)所依据的图像的比例值为2。此图像的分辨率通常为300x300像素 生成的图像的比例值为1 我使用的代码是: + (UIImage*) maskImage:(UIImage *)image withMask:(UIIm

我想通过传递另一个图像作为遮罩来遮罩一个图像。我可以遮罩图像,但生成的图像看起来不太好。它的边界参差不齐

我想这个问题与视网膜图形有关。两个图像的缩放特性不同,如下所示:

  • 要遮罩的图像的比例值为1。此图像的分辨率通常大于1000x1000像素
  • 我希望生成的图像(仅具有黑白颜色的图像)所依据的图像的比例值为2。此图像的分辨率通常为300x300像素 生成的图像的比例值为1

    我使用的代码是:

    + (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);
    CGImageRelease(mask);
    UIImage *maskedImage = [UIImage imageWithCGImage:masked ];
    CGImageRelease(masked);
    return maskedImage;
    }
    

    我怎样才能得到一个符合视网膜比例的蒙版图像呢?

    我也有同样的问题。这条线似乎忽略了比例因子

    UIImage *maskedImage = [UIImage imageWithCGImage:masked];
    
    所以你应该自己画这个图像。替换为以下内容:

    UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);
    
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    CGRect rect = CGRectMake(0, 0, image.size.width, image.size.height);
    
    CGContextDrawImage(context, rect, masked);
    
    UIImage * maskedImage = UIGraphicsGetImageFromCurrentImageContext();
    
    UIGraphicsEndImageContext();
    
    我觉得很好

    编辑

    你能行

    UIImage * maskedImage = [UIImage imageWithCGImage:masked scale:[[UIScreen mainScreen] scale] orientation:UIImageOrientationUp];
    

    如果它对你有帮助,你应该考虑确认答案。我在2013年7月3日问了这个问题,第一个答案是1月8日。在这段时间里,我转移到了不同的项目,我没有检查答案是否有用,如果我不确定,我怎么能接受任何答案。我只是想结束这个问题,但不知道怎么做。不难找到。。。
    UIImage * maskedImage = [UIImage imageWithCGImage:masked scale:[[UIScreen mainScreen] scale] orientation:UIImageOrientationUp];