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

Posted

技术标签:

【中文标题】UIImage 在 iPhone 上保存带有文件名的图像【英文标题】:UIImage Saving image with file name on the iPhone 【发布时间】:2010-02-15 04:27:43 【问题描述】:

如何将带有我选择的文件名的图像(例如使用 UIImageWriteToSavedPhotosAlbum() 方法)保存到 private/var 文件夹?

【问题讨论】:

【参考方案1】:

肯尼,你有答案!为了说明,我一直认为代码更有帮助。

//I do this in the didFinishPickingImage:(UIImage *)img method

NSData* imageData = UIImageJPEGRepresentation(img, 1.0);


//save to the default 100Apple(Camera Roll) folder.   

[imageData writeToFile:@"/private/var/mobile/Media/DCIM/100APPLE/customImageFilename.jpg" atomically:NO]; 

【讨论】:

保存到文档文件夹 NSArray 的示例 paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *filePath2 = [NSString stringWithFormat:@"%@/%@.jpg", documentsDirectory, fileName]; NSData imageData = UIImageJPEGRepresentation(drawImage.image, 1.0); [imageData writeToFile:filePath2 atomically:NO]; [imageData writeToFile:@"/private/var/mobile/Media/DCIM/100APPLE/customImageFilename.jpg" atomically:NO];这个 private/var/mobile 文件夹是什么?这是在 ios 中写出文件的标准位置吗? 问题是,如果苹果允许使用该代码的应用程序...***.com/questions/2884003/… 这还允许吗..?似乎不是我有权写入的文件路径。【参考方案2】:

UIImageWriteToSavedPhotosAlbum() 仅用于保存到照片相机胶卷。要保存到自定义文件夹,您需要使用UIImageJPEGRepresentation()UIImagePNGRepresentation() 将 UIImage 转换为 NSData,然后将此 NSData 保存到您喜欢的任何位置。

【讨论】:

【参考方案3】:

您可以使用以下代码,而无需使用 ALAssetsLibrary...

NSString *fileName;

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

[picker dismissViewControllerAnimated:YES completion:^

if( [picker sourceType] == UIImagePickerControllerSourceTypeCamera )
            
                UIImageWriteToSavedPhotosAlbum(image,nil, nil, nil);
                [self performSelector:@selector(GetImageName) withObject:nil afterDelay:0.5];
            
            else
            
                NSURL *refURL = [info valueForKey:UIImagePickerControllerReferenceURL];
                PHFetchResult *result = [PHAsset fetchAssetsWithALAssetURLs:@[refURL] options:nil];
                fileName = [[result firstObject] filename];
            
];

-(void)GetImageName

 NSString *str =@"";
 PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
 fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
 PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];

if (fetchResult != nil && fetchResult.count > 0) 

    str = [[fetchResult lastObject] filename];


fileName = str;

【讨论】:

以上是关于UIImage 在 iPhone 上保存带有文件名的图像的主要内容,如果未能解决你的问题,请参考以下文章

左侧单点触控 iphone 上带有圆角的 UIImage

无法从 iPhone 文档目录位置中的已保存文件重新加载 UIImage

iPhone保存的png在我加载回来后不一样了

将编辑后的图像保存到 iPhone 画廊

从 iPhone 相机保存和裁剪 UIImage

从路径获取 UIImage 仅在调试器中单步执行时有效