【发布时间】:2011-01-16 20:50:07
【问题描述】:
如何将带有我选择的文件名的图像(例如使用 UIImageWriteToSavedPhotosAlbum() 方法)保存到 private/var 文件夹?
【问题讨论】:
标签: iphone uiimage uiimagepickercontroller sandbox save-image
如何将带有我选择的文件名的图像(例如使用 UIImageWriteToSavedPhotosAlbum() 方法)保存到 private/var 文件夹?
【问题讨论】:
标签: iphone uiimage uiimagepickercontroller sandbox save-image
UIImageWriteToSavedPhotosAlbum() 仅用于保存到照片相机胶卷。要保存到自定义文件夹,您需要使用UIImageJPEGRepresentation() 或UIImagePNGRepresentation() 将 UIImage 转换为 NSData,然后将此 NSData 保存到您喜欢的任何位置。
【讨论】:
肯尼,你有答案!为了说明,我一直认为代码更有帮助。
//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];
【讨论】:
您可以使用以下代码,而无需使用 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;
}
【讨论】: