【问题标题】:Renaming the images in ipad and then saving that image to app bundle?重命名 ipad 中的图像,然后将该图像保存到应用程序包?
【发布时间】:2011-04-26 04:20:18
【问题描述】:

我正在创建一个应用程序,通过单击两个单独的操作按钮来显示照片库和应用程序包中的图像。

现在我想要创建一个新的操作按钮,其目的是从照片库中选择一张图片,然后将该图片保存到我的应用程序包中。

谁能指导我关于这个话题的正确方向。

谢谢, 克里斯蒂

【问题讨论】:

  • 你想要路径还是如何从显示的路径中获取图像..
  • 感谢您的回复,我必须从照片库中的现有图像中选择图像,是的,为此我必须知道图像的 url,并且我知道它们。现在我想将这些图像保存到app bundle ,请告诉如何使用 urls 保存在 app bundle 中

标签: iphone cocoa-touch ipad


【解决方案1】:

我认为一旦应用程序包在 iPhone 上,您就无法对其进行修改。整个事情都是代码签名的,改变它会导致它不再运行。您可以尝试将图像保存到文档目录。

据我所知,一旦您的应用发布到 App Store,您就无法在 iPhone 上重新打包捆绑包。所以换一种方式,将包中的数据放在文件系统上,以便您可以在运行时更改它。

我对这些东西的常用技巧是:

  1. 捆绑初始数据
  2. 有一个例程检查 版本控制文件的存在 iPhone 启动时的文件系统
  3. 如果该例程没有找到 当前版本的文件,复制 将所有数据输入 iPhone 文件系统
  4. 引用来自 我的应用程序中的文件系统,而不是 使用捆绑路径

所以,本质上你的包只是一个交付机制,一种用你需要的东西预加载文件系统的方法。一旦它在文件系统上,您可以更改任何您想要的内容。

参考文献

Downloading image into bundle?

How to save a UIImage to the application's Bundle?

更新

- (IBAction)saveImage:(UIImage *)image {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];
NSData *imageData = UIImagePNGRepresentation(image);// Change according to your needs
[imageData writeToFile:savedImagePath atomically:NO];   
}

【讨论】:

  • 你是 100% 确定的朋友吗??
  • 是的,我想是的。我已经添加了参考。请检查一下
  • 非常感谢你让我开心,现在我可以看看其他任务了。
  • 你能告诉我如何将图像添加到我的文档目录
  • 检查我的答案中的更新部分。接受对您有帮助的答案。
【解决方案2】:

您可以使用这个从您从照片库中挑选的图像制作一个 NSData -

NSData *imageData = UIImageJPEGRepresentation (UIImage *image,CGFloat compressionQuality);

然后调用

[imageData writeToFile:imgPath atomically:YES];

这里的imgPath是你要写入文件的TMP目录的路径,获取为-

NSString *filename = @"a.png";

NSString *uniquePath = [TMP stringByAppendingPathComponent:filename];

而 TMP 是一个枚举

#define TMP NSTemporaryDirectory()

【讨论】:

  • 我是一个语音识别应用程序,当我说“玫瑰”时,正在显示玫瑰的图像,并且在我的库中我有玫瑰的图像,现在我想要的是这个玫瑰图像被保存到应用程序捆绑为“ROSE.png”。你的这个代码是否会为我服务。在那个 NString *filename 中,我必须提供在我的文本字段中输入的文本才能将该图像保存为所需的名称。是这样吗?
  • @Christina 您无法将文件保存到应用程序包,因为应用程序包已使用 SSL 证书签名,您无法更改它。您可以将文件写入 TMP 或文档目录。上面的代码将文件写入 TMP。如果您想如何获取文档目录路径,请告诉我?
  • @saadnib -yes,我想知道如何获取文档目录路径。
  • 你可以得到它,我用它来获取数据库路径 - NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDir = [documentPaths objectAtIndex:0]; databasePath = [[documentsDir stringByAppendingPathComponent:databaseName] 保留];
  • 非常感谢 saadnib,现在您可以帮我在我的应用中播放影片剪辑
猜你喜欢
  • 2015-03-07
  • 1970-01-01
  • 2011-07-19
  • 2011-08-13
  • 2011-05-01
  • 2014-10-16
  • 2018-04-01
  • 1970-01-01
  • 2016-01-26
相关资源
最近更新 更多