在iOS应用中生成和保存图像

时间:2013-03-27 16:12:32

标签: iphone ios objective-c image uiscrollview

我希望能够从一组数据生成图像。生成图像后,我想将其保存到相册并在滚动视图中显示。如何告诉应用程序创建图像?创建图像后,如何在滚动视图中显示它?同时,如何将该图像保存到相册?

这里没有详细介绍我的应用程序:

它接收用户输入的一组数据(主要是整数数据),然后使用Core Graphics将其转换为图像(我可以生成图像并通过为视图生成新类将其显示给视图控制器[子类UIView]视图控制器的一部分)。现在我希望能够保存该图像以供进一步使用(我希望能够保存无限数量的图像,因此NSUserDefaults不是我想要的)。 PNG文件是理想的,但我知道必须进行转换才能做到这一点。

我正在考虑尝试的事情:

UIImage有很多创作者,但我不知道我想使用哪一个。 我应该创建一个新类来生成图像吗? 我应该在另一个视图控制器中生成图像并将其保存在那里并在我想要显示的视图控制器中访问它吗?我是否应该一起跳过Core Graphics并且只使用OpenGL ES(我有使用OpenGL的经验,而不是在iPhone上)?

1 个答案:

答案 0 :(得分:0)

您没有提供有关您正在做的事情的详细信息,因此除了一般条款之外,很难提供建议:

  1. 你是如何产生你的形象的?如果它是基于UIImage的,保存图像是微不足道的 - 使用UIImageWriteToSavedPhotosAlbum。该文档还说明了PNG和JPEG表示函数。
  2. 如果您还没有UIImage(即,您只是渲染到图形上下文中),可以使用不同的方法来处理您想要的内容。查看CGBitmapContextCreateImage上的核心图形文档和UIGraphicsBeginImageContextWithOptions上的UIKit文档。
  3. 更新:

    关于文本,您是在调用UIGraphicsGetImageFromCurrentImageContext之前调用绘制方法吗?

    我通常在您的方法上使用Core Graphics变体,但逻辑类似:

    CGContextRef context = CGBitmapContextCreate(...);
    // ... do some other drawing...
    NSString* foo = @"Foo";
    CGRect bounds = CGRectMake(0,0,100,100);
    [foo drawInRect:bounds withFont:[UIFont systemFontOfSize:10]];
    CGImageRef image = CGBitmapContextCreateImage(context);