2016-11-12 117 views
0
- (IBAction)chooseImgBtnClick:(id)sender { 
    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.allowsEditing = YES; 
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    [self presentViewController:picker animated:YES completion:NULL]; 
} 


-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info{ 
    _image=[info objectForKey:UIImagePickerControllerOriginalImage]; 
    [_vehicleImageView setImage:_image]; 
    [self dismissViewControllerAnimated:YES completion:NULL];_vehicleImageView.image= [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    NSData *webData = UIImagePNGRepresentation(_vehicleImageView.image); 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:@"png"]; 
    [webData writeToFile:localFilePath atomically:YES]; 
    NSLog(@"localFilePath.%@",localFilePath); 
    _filePath=localFilePath; 
} 

影像使用我選擇從庫中的照片,上面的代碼,並設置在UIImageView的照片並試圖採取的路徑到一個名爲localFilePath字符串。我將路徑分配給_filepath。加載圖像到ImageView的,採取從文件路徑

現在我編寫了一個函數,用於從文件路徑中獲取圖像,並在單擊另一個按鈕時將圖像載入另一個UIImageView。 但圖像沒有被加載。請告知

以下是功能。

- (IBAction)loadSecondView:(id)sender { 
    NSData *pngData = [NSData dataWithContentsOfFile:_filePath]; 
    UIImage *image = [UIImage imageWithData:pngData]; 
    [_secondImageView setImage:image]; 

} 
+0

只有三個sourceTypes可用,其中一個是相機。除非你想要相機膠捲(sourceType == savedPhotosAlbum),否則很難知道你正在尋找什麼,沒有一個更詳細的例子。 iOS設備上的「任何目錄」要麼不明確(你的意思是iCloud還是其他地方的「off-device」?)或不可能的(iOS設備沒有目錄概念)。請給予更多的細節.... – dfd

+0

我同意@dfd。請閱讀這裏的答案: - http://stackoverflow.com/a/1082265/4525734 此外,這是鏈接到蘋果文檔: https://developer.apple.com/reference/uikit/uiimagepickercontrollersourcetype –

+0

是不可能從文檔文件夾中選擇圖像或者在項目中創建的具有一些圖像的任何文件夾? – Harish

回答

0

我沒有將圖像名稱保存到屬性中。之後,我使用下面的代碼從特定路徑中取回圖像並放入ImageView中。

-(UIImage*) getImage:(NSString *) imageName{ 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                 NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString* path = [documentsDirectory stringByAppendingPathComponent: 
         imageName ]; 
    UIImage* image = [UIImage imageWithContentsOfFile:path]; 
    NSLog(@"%@",image); 
    return image; 

} 
0

的iOS,而越來越接近有網友認爲的「文件」和「目錄」,並不完全啓用。我認爲最終你有兩種選擇可供選擇。我將按照可用性從大到小的順序列出它們:

  • (1)使用OS「原樣」 - 相機,相機膠捲,照片庫。這可能需要重構一些你正在做的事情,但這也是「iOS方式」。

  • (2)與iCloud Drive and the Document Picker一起使用。這個鏈接是一個高層次的解釋。使用這個你可以獲得更多的「蘋果方式」,但是你現在限制用戶在iCloud中存儲東西。

  • (3)利用名爲Document Provider的應用程序擴展。我從來沒有使用這個(但),但我相信這將在「雲」中進一步擴展事物,並讓您能夠讀/寫Dropbox等。謹慎的一句話:我已經使用了Photo Editing在一個應用程序中擴展,並且有不少「陷阱」,你必須忍受。擴展在UI方面比應用程序更受限制。 (4)我不知道這是否可行,但如果你真的陷入困境,也許你可以使用某種形式的「深層鏈接」來讓你的應用成爲打開某些圖像的默認應用。這是一個長鏡頭 - 雖然我真的不認爲它會工作。

相關問題