将UIView保存为原始分辨率图像

时间:2014-10-02 19:37:57

标签: ios objective-c

我可以将UIView的内容作为图像保存到库中。

我试图保存的图像在应用程序上的分辨率非常高,但将其保存到照片库会显着降低分辨率。我想要保存的图像与屏幕宽度相同,但屏幕高度却是很多倍。

我保存的图像看起来像我想要的应用程序中的UIScrollView,但它保存的图像的分辨率低于实际图像。我怎么能阻止它这样做?

先谢谢了:D

编辑:添加代码......

- (void) saveImageToLibrary
{
    UIImage* image;// = nil;
    UIGraphicsBeginImageContext(scrollview.contentSize);
    {
        CGPoint savedContentOffset = scrollview.contentOffset;
        CGRect savedFrame = scrollview.frame;
        scrollview.contentOffset = CGPointZero;
        scrollview.frame = CGRectMake(0, 0, scrollview.contentSize.width,  scrollview.contentSize.height);
        self.view.frame = CGRectMake(0, 0, scrollview.contentSize.width,  scrollview.contentSize.height);

        [scrollview.layer renderInContext: UIGraphicsGetCurrentContext()];
        image = UIGraphicsGetImageFromCurrentImageContext();

        scrollview.contentOffset = savedContentOffset;
        scrollview.frame = savedFrame;
        self.view.frame = savedFrame;
    }
    UIGraphicsEndImageContext();
    UIImageWriteToSavedPhotosAlbum(image, nil,nil,nil);
}

我希望这会有所帮助。

3 个答案:

答案 0 :(得分:0)

尝试创建图像时是否设置了正确的比例?你可以发布代码吗?

答案 1 :(得分:0)

请改用:

UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, scrollView.opaque, [[UIScreen mainScreen] scale]);

修改

您也可以尝试将比例设置为零:

UIGraphicsBeginImageContextWithOptions(scrollView.contentSize, scrollView.opaque, 0.0);

这对你有帮助吗?

答案 2 :(得分:0)

好人和goyals ......我想我已经找到了问题。

问题是iPhone模拟器。根据您要求的硬件,图像将针对求和器的分辨率进行优化。

我不完全相信这是因为我之前正在模拟iPhone 5(有视网膜显示),但模拟iphone 6似乎工作正常。

如果您想要了解更多详细信息,或者您想要添加到此主题,请点击此链接:D

https://stackoverflow.com/questions/8032528/uiimage-image-loaded-from-appbundle-is-saved-at-lower-resolution-in-app-direct