【问题标题】:Generating and saving images in iOS app在 iOS 应用中生成和保存图像
【发布时间】:2013-03-27 16:12:32
【问题描述】:

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

我的应用程序在此不做详细介绍:

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

我正在考虑尝试的事情:

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

【问题讨论】:

  • 我已经尝试了以下方法并获得了要保存的图像: UIGraphicsBeginImageContextWithOptions //生成图像和 modelImage = UIGraphicsGetImageFromCurrentImageContext(); //保存图像。我已经将它保存到相册,但我无法保存我使用以下代码放置的文本: UIFont *font = [UIFont boldSystemFontOfSize:24.0]; [[UIColor whiteColor] setFill]; [蛋白质名称 drawAtPoint:CGPointMake(15.0f, 125.0f) withFont:font]; [proteinLength drawAtPoint:CGPointMake(length-100.0f, 125.0f) withFont:font]; //不会显示在相册中
  • 尝试使用 ALAsset 库来保存和检索照片库图像。使用 ALAsset 库保存您的 UIImage,它会在完成保存过程后返回一个资产 URL 以将其取回.. 在此处查看详细信息 developer.apple.com/library/ios/#documentation/AssetsLibrary/…

标签: iphone ios objective-c image uiscrollview


【解决方案1】:

你没有提供太多关于你在做什么的细节,所以除了笼统的说法之外很难给出建议:

  1. 您是如何生成图像的?如果它是基于 UIImage 的,则保存图像很简单——使用UIImageWriteToSavedPhotosAlbum。该文档还说明了 PNG 和 JPEG 表示函数。
  2. 如果您还没有 UIImage(即,您只是渲染到图形上下文中),则可以使用不同的方法来处理您想要的内容。查看CGBitmapContextCreateImage 上的Core Graphics 文档和UIGraphicsBeginImageContextWithOptions 上的UIKit 文档。

更新:

关于文本,您是否在UIGraphicsGetImageFromCurrentImageContext 调用之前调用了draw 方法?

我通常在您的方法上使用 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);

【讨论】:

  • 我正在使用 UIView 类中的 drawRect 方法生成图像。我目前正在阅读有关 Core Graphics 的开发人员库,并认为我可能偶然发现了与您所说的相同的事情。感谢您的回复。
  • 谢谢,@jstevenco。这对让它工作有很大帮助。我现在有一个问题,我看不到使用 drawAtPoint 方法放在图像上的文本。我可以在我的滚动视图中看到它,但不能在保存到相册的图像中看到它。我没有将它添加到上下文中吗?还是只是没有正确保存?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多