UIImage Сохранение изображения с именем файла на iPhone - PullRequest
12 голосов
/ 15 февраля 2010

Как я могу сохранить изображение (например, с помощью метода UIImageWriteToSavedPhotosAlbum ()) с выбранным именем файла в папку private / var?

Ответы [ 3 ]

17 голосов
/ 16 февраля 2010

Кенни, у тебя был ответ! Для иллюстрации я всегда думаю, что код более полезен.

//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]; 
10 голосов
/ 15 февраля 2010

UIImageWriteToSavedPhotosAlbum() используется только для сохранения на фотопленке камеры. Чтобы сохранить в пользовательскую папку, вам нужно конвертировать UIImage в NSData с UIImageJPEGRepresentation() или UIImagePNGRepresentation(), а затем сохранить эти NSData в любом месте.

0 голосов
/ 02 июня 2017

Вы можете использовать код ниже, без использования 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;
}
...