2014-10-04 4 views
1

UICollectionView에 표시되는 이미지 배열이 있습니다.UIImageView에 표시된 이미지 저장

컬렉션보기의 셀을 누르면 해당 이미지가 뷰 컨트롤러로 푸시되고 UIImageView에 표시됩니다.

버튼을 눌러 사용자 카메라 롤에 이미지를 저장하고 싶습니다.

- (IBAction)onClickSavePhoto:(id)sender{ 

    UIImage *img = [UIImage imageNamed:@"which ever image is being currently displayed in the image view"]; 

    UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil); 
} 

:

하지만 몇 가지 문제가 그렇게가 있어요 ...

나는 코드와 우측 라인에있어하지만 모두가 함께 작동하도록 얻을 수 있다고 생각 사용자가 이미지보기에 표시된 이미지를 저장할 수 있도록 코드를 조작하려면 어떻게해야합니까?

미리 감사드립니다.

UPDATE :

당신은이를 사용할 수 있습니다 라이브러리에 이미지를 저장하는 방법

Save image in UIImageView to iPad Photos Library

답변

1

:

다른 게시물에 문제에 대한 해결책을 찾을 수 기능 :

UIImageWriteToSavedPhotosAlbum(UIImage *image, 
           id completionTarget, 
           SEL completionSelector, 
           void *contextInfo); 

는 당신은 및 에서는 ContextInfo 당신이 UIImage가 저장 완료되면 통보 할 경우, 그렇지 않으면 당신은 nil에 전달할 수 있습니다 completionTarget, completionSelector이 필요합니다.

More info here

기발한에게 UIImageWriteToSavedPhotosAlbum가 사용하는 것보다 라이브러리에 이미지를 저장하는 빠른 방법 : There`s 훨씬 더 빠르게 다음 UIImageWriteToSavedPhotosAlbum 방법은 아이폰 OS 4.0 이상 AVFoundation 프레임 워크

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 
    [library writeImageToSavedPhotosAlbum:[image CGImage] orientation:(ALAssetOrientation)[image imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){ 
    if (error) { // TODO: error handling } 
    else { // TODO: success handling } 
}]; 

//for non-arc projects 
//[library release]; 
를 사용하여 할

UIImageView에있는 이미지를 캡처 화면으로 캡처하십시오 :

iOS 7에는보기 계층을 현재 그래픽 컨텍스트에 그릴 수있는 새로운 방법이 있습니다. 이것은 UIImage를 매우 빠르게 만드는 데 사용할 수 있습니다.

- (UIImage *)takeSnapShot { 
    UIGraphicsBeginImageContextWithOptions(self.myImageView.bounds.size, NO, [UIScreen mainScreen].scale); 

    [self drawViewHierarchyInRect:self.myImageView.bounds afterScreenUpdates:YES]; 

    // old style [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 

그것은 기존 renderInContext 후 상당히 빠르다 : 방법

이것은있는 UIImage로 뷰를 얻기에 UIView에 분류 방법이다.

참조 : SWIFT FOR https://developer.apple.com/library/ios/qa/qa1817/_index.html

UPDATE : 연장 동일하지 :

extension UIView { 

    func takeSnapshot() -> UIImage { 
     UIGraphicsBeginImageContextWithOptions(self.myImageView.bounds.size, false, UIScreen.mainScreen().scale); 

     self.drawViewHierarchyInRect(self.myImageView.bounds, afterScreenUpdates: true) 

     // old style: self.layer.renderInContext(UIGraphicsGetCurrentContext()) 

     let image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return image; 
    } 
}