gpt4 book ai didi

uiimage - 如何在视网膜显示上不损失质量的情况下将 UIView 捕获到 UIImage

转载 作者:行者123 更新时间:2023-12-03 04:01:14 32 4
gpt4 key购买 nike

我的代码在普通设备上运行良好,但在视网膜设备上创建模糊图像。

有人知道我的问题的解决方案吗?

+ (UIImage *) imageWithView:(UIView *)view
{
UIGraphicsBeginImageContext(view.bounds.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;
}

最佳答案

从使用 UIGraphicsBeginImageContext 切换到 UIGraphicsBeginImageContextWithOptions (如文档 on this page 所示)。为比例传递 0.0(第三个参数),您将获得比例因子等于屏幕比例因子的上下文。

UIGraphicsBeginImageContext 使用固定比例因子 1.0,因此实际上您在 iPhone 4 上获得的图像与其他 iPhone 上的图像完全相同。我敢打赌,当你隐式放大 iPhone 4 时,它要么正在应用滤镜,要么只是你的大脑发现它不如周围的一切清晰。

所以,我猜:

#import <QuartzCore/QuartzCore.h>

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

UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

return img;
}

在 Swift 4 中:

func image(with view: UIView) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, 0.0)
defer { UIGraphicsEndImageContext() }
if let context = UIGraphicsGetCurrentContext() {
view.layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
return image
}
return nil
}

关于uiimage - 如何在视网膜显示上不损失质量的情况下将 UIView 捕获到 UIImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4334233/

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