gpt4 book ai didi

ios - 将掩码转换为 NSData 时保留 UIImage 上的掩码

转载 作者:行者123 更新时间:2023-11-29 10:30:42 25 4
gpt4 key购买 nike

我正在使用 Parse 开发一个 iOS 应用程序,该应用程序要求个人资料图片为六边形。现在,我正在从 Parse 下载 PFFile,抓取该图像,然后用六边形遮盖它。这适用于像个人资料屏幕这样的简单 View (屏蔽只需要一次),但是当使用关注者的个人资料图像列表屏蔽 Collection View 时,该应用程序会遇到严重的性能问题。

在我看来,最好的解决方案是将个人资料图片上传到已经正确屏蔽的 Parse,因此我所要做的就是将它们拉下来并显示它们。这是我在注册 View Controller 中用来执行此操作的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

[picker dismissViewControllerAnimated:YES completion:nil];

UIImage *chosenPicture = info[UIImagePickerControllerEditedImage];

[EVNUtility maskImage:chosenPicture withMask:[UIImage imageNamed:@"MaskImage"] withCompletionBlock:^(UIImage *maskedImage) {

self.profileImageView.image = maskedImage;
self.pictureData = UIImagePNGRepresentation(maskedImage);

}];

}

图像从我的实用程序函数中正确地返回,但是当我使用 UIImagePNGRepresentation(或 JPG 等价物)将 UIImage 转换为数据(然后将此数据上传到 Parse)时,图像失去了它的掩码并再次变成正方形.

如何在将 UIImage 转换为 NSData 时保留 mask ?

我已经尝试了一些方法,但我猜这是由于我对如何进行 mask 以及它是否会影响底层图像的模糊理解所致。这是我用于屏蔽图像的引用:http://iosdevelopertips.com/cocoa/how-to-mask-an-image.html

最佳答案

将包含您的图像和蒙版的 View 传递给此方法(我将其用作 UIImage 的扩展)

+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;
}

这将返回您的“扁平化”蒙版图像(确保 UIView 具有清晰的背景)

然后您需要在创建 PFFile 之前将其转换为 PNG(而非 JPG),这将保留透明度。

关于ios - 将掩码转换为 NSData 时保留 UIImage 上的掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29822706/

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