问题 - 将图像文件保存到 iphone 中的资源文件夹

Posted

技术标签:

【中文标题】问题 - 将图像文件保存到 iphone 中的资源文件夹【英文标题】:Issue- save an image file to resource folder in iphone 【发布时间】:2013-12-11 05:14:20 【问题描述】:

我正在开发画廊类型的应用程序。用户将在其中点击图像视图以从相机捕获图像。根据我的要求,我需要将捕获图像保存在项目的设备资源目录中的一个特定文件夹中。而那个文件夹只有我需要推送到服务器上。这是我用于捕获和写入文件的代码...

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    CGFloat compression = 0.5f;

    UIImage *smallSizeImage = [self scaleImage:image toSize:CGSizeMake(140.0, 80.0)];
    imageData = UIImageJPEGRepresentation(smallSizeImage, compression);

    ivPicture.image = smallSizeImage;

    self.passingSlPosition.positionImageId = [Util getNewGUID];

    [imageData writeToFile:[Util getFilePathForFileName:[NSString stringWithFormat:@"%@.jpg",self.passingSlPosition.positionImageId]] atomically:YES];

    [picker dismissViewControllerAnimated:YES completion:nil];


-(UIImage *)scaleImage:(UIImage *)image toSize:(CGSize)newSize

    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

//实用类

+(NSString*)getFilePathForFileName:(NSString*)filename

    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    return [cachePath stringByAppendingPathComponent:filename];


+ (NSString *)getNewGUID

    CFUUIDRef theUUID = CFUUIDCreate(NULL);
    CFStringRef string = CFUUIDCreateString(NULL, theUUID);
    CFRelease(theUUID);
    return (__bridge NSString *)string;

并且在写入文件后,我无法使用此路径查看资源中的文件

~/Library/Application Support/iphone 模拟器....

因为我在Application Support中没有找到iphone模拟器文件夹。我已经安装了OS X 10.8.5 & Xcode-4.6.3。 那么,您能帮我看看上述代码的以下代码是什么吗?请为此提出一些解决方案。

谢谢。

【问题讨论】:

根据您的问题,您无法看到 iphone 模拟器,这可能有助于您取消隐藏隐藏文件并检查 mikesel.info/show-hidden-files-mac-os-x-10-7-lion ~/Library 文件夹在 OS X 下默认隐藏。 当您只想知道如何访问 Mac 上的 ~/Library 文件夹时,为什么要问这么长的问题和所有代码? @rmaddyThanks..不是这样,使用上面的代码..我的图像文件没有保存在应用程序资源文档中。这就是为什么我附上了我的代码,你能告诉我在资源中写入图像文件是否有任何错误。 您的代码将图像保存在应用沙箱内的Library/Caches 文件夹中。 【参考方案1】:

Command + Shift + G 在 Finder 中。并输入~/Library。 然后,您就可以访问 Simulator 文件夹了。

应用程序支持 -> iPhone 模拟器

【讨论】:

@Joey非常感谢,现在我有了iphone模拟器选项。 @joey 但是在我的应用程序 id 文档中没有图像文件。你能看看我上面的代码,如果有任何错误,请告诉我? 首先你应该找到你的沙箱目录,然后移动到Library/Caches目录。 NSLog("%@", [Util getFilePathForFileName:[NSString stringWithFormat:@"%@.jpg",self.passingSlPosition.positionImageId]]);在你的 imagePickerController:didFinishPickingMediaWithInfo: 函数中。 @joeyThanks 再次..请检查随附的屏幕截图。它正在图书馆/缓存中【参考方案2】:

试试这个打开Finder然后点击菜单栏中的Go ->然后点击option按钮你可以看到隐藏的Library 在列表中 -> 选择 Library 你会发现 Application Support -> iPhone Simulator

【讨论】:

感谢@llyas .. 现在它存储在缓存中。请检查上面附加的屏幕截图。 尝试通过指定路径将图像文件保存在文档目录中。 要将图像保存到文档目录试试这个 - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *imgPath = [documentsDirectory stringByAppendingPathComponent:@"ImageName.jpg"]; NSFileManager *fileManager = [NSFileManager defaultManager]; [imageData writeToFile:imgPath atomically:YES]; 我已经将图像文件保存在文件夹中。但我的问题是如何使用 php url 将此文件夹发送到服务器??? 您需要通过包含在 url 中将其转换为 base64 格式来发送图像,或者这取决于您的服务器将如何接受它也可以接受 json 格式的图像数据。

以上是关于问题 - 将图像文件保存到 iphone 中的资源文件夹的主要内容,如果未能解决你的问题,请参考以下文章

如何仅获取保存在iphone应用程序文档文件夹中的所有照片名称

如何将图像保存到 iPhone 中的照片而不损失质量?

如何将可绘制资源中的图像保存到 SD 卡?

将自定义图像(非 JPEG)保存到 iPhone 照片目录

UIImage 在 iPhone 上保存带有文件名的图像

保存图像以供以后在 iPhone 中使用