【问题标题】:Render UIView in full fidelity for saving以完全保真度渲染 UIView 以进行保存
【发布时间】:2012-10-31 21:47:17
【问题描述】:

我的应用程序允许用户在背景图像上合成图像(添加然后旋转、缩放、移动)并将最终编辑保存到相机胶卷。

主要编辑 ViewController 的视图是 UIView 层次结构的顶部。在此视图中,我将 UIImageView 添加为子视图,其中包含来自相机胶卷或相机的图像。用户然后添加额外的字符(狗、猫等),每个都实现为一个单独的 UIView,可以旋转、移动和缩放。

当用户完成编辑后,我想以可用的最高分辨率将整个场景保存到相机胶卷 - iphone4 上背景图像 1936X2592 像素(UIImageView)的分辨率。

目前我使用下面的代码,但这只是给我场景的显示分辨率,而不是内存中图像的完整分辨率。有什么建议么? (我尝试在下面的代码中将上下文大小增加到完整的背景大小,但没有运气)

// create a CG context
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);

// render into the new context
[view.layer renderInContext:UIGraphicsGetCurrentContext()];

// get the image out of the context
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

【问题讨论】:

  • 您是否尝试将view.frame 设置为保存前的1936x2592?

标签: ios graphics uiview rendering


【解决方案1】:

答案似乎很简单,在这个线程https://stackoverflow.com/a/11177322/207616中也有解释

在调用 renderInContext 之前简单放大绘图上下文以实现所需的输出图像大小

CGContextScaleCTM(context, scaleFactor, scaleFactor);

【讨论】:

    猜你喜欢
    • 2016-09-27
    • 2016-06-16
    • 2013-06-26
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多