이미지를 카메라 롤에 저장하려면 어떻게 해야 합니까?
Xcode(4.3 사용)가 처음이라 이미지를 기기의 카메라 롤에 저장하는 방법을 잘 모르겠습니다.지금까지 이미지를 저장하기 위해 버튼에 대한 IBAction을 설정한 것이 전부입니다.사용자의 카메라 롤에 이미지를 저장하는 데 사용할 수 있는 라이브러리 방법 또는 기능은 무엇입니까?
기능을 사용합니다.
//Let's say the image you want to save is in a UIImage called "imageToBeSaved"
UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil);
편집:
//ViewController.m
- (IBAction)onClickSavePhoto:(id)sender{
UIImageWriteToSavedPhotosAlbum(imageToBeSaved, nil, nil, nil);
}
사진 프레임워크를 사용하는 iOS8+에 대한 답변입니다.
목표-C:
#import <Photos/Photos.h>
UIImage *snapshot = self.myImageView.image;
[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
PHAssetChangeRequest *changeRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:snapshot];
changeRequest.creationDate = [NSDate date];
} completionHandler:^(BOOL success, NSError *error) {
if (success) {
NSLog(@"successfully saved");
}
else {
NSLog(@"error saving to photos: %@", error);
}
}];
스위프트:
// Swift 4.0
import Photos
let snapshot: UIImage = someImage
PHPhotoLibrary.shared().performChanges({
PHAssetChangeRequest.creationRequestForAsset(from: snapshot)
}, completionHandler: { success, error in
if success {
// Saved successfully!
}
else if let error = error {
// Save photo failed with error
}
else {
// Save photo failed with no error
}
})
다음은 Apple 설명서에 대한 링크입니다.
사진 라이브러리에 액세스할 수 있는 권한을 요청하기 위해 info.plist에 적절한 키/값을 추가하는 것을 잊지 마십시오.
<key>NSCameraUsageDescription</key>
<string>Enable camera access to take photos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Enable photo library access to select a photo from your library.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Enable photo library access to save images to your photo library directly from the app.</string>
참고로 다음과 같은 방법으로 비디오를 저장할 수 있습니다.
UISaveVideoAtPathToSavedPhotosAlbum(videoPath, nil, nil, nil);
Instagram에 업로드할 비디오를 저장할 수 있습니다. 예:
// Save video to camera roll; we can share to Instagram from there.
-(void)didTapShareToInstagram:(id)sender {
UISaveVideoAtPathToSavedPhotosAlbum(self.videoPath, self, @selector(video:didFinishSavingWithError:contextInfo:), (void*)CFBridgingRetain(@{@"caption" : caption}));
}
- (void) video: (NSString *) videoPath
didFinishSavingWithError: (NSError *) error
contextInfo: (void *) contextInfoPtr {
NSDictionary *contextInfo = CFBridgingRelease(contextInfoPtr);
NSString *caption = contextInfo[@"caption"];
NSString *escapedString = [videoPath stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; // urlencodedString
NSString *escapedCaption = [caption stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]; // urlencodedString
NSURL *instagramURL = [NSURL URLWithString:[NSString stringWithFormat:@"instagram://library?AssetPath=%@&InstagramCaption=%@", escapedString, escapedCaption]];
[[UIApplication sharedApplication] openURL:instagramURL];
}
Swift 4의 사진 라이브러리에 이미지 저장
Add "Privacy - Photo Library Additions Usage Description" in info.plist다음 코드를 사용하여 이미지를 저장합니다.
UIImageWriteToSavedPhotosAlbum(imageView.image!, nil, nil, nil)
이미지()로 사용하여 카메라 롤에 저장할 고유 콘텐츠를 가져옵니다.
이미지()로 사용하면 몇 줄의 코드만으로 다양한 재미있는 것들을 카메라 롤에 저장할 수 있습니다!개체에 투명도가 이미 포함되어 있는 경우 매우 강력할 수 있습니다.
as Image()는 일부 개체의 이름을 지정하기 위해 UITextView, WKWebView, UIImageView, UIButton, UISlider, UITableView와 함께 작동합니다(단, 이미지가 0이 아닌 경우 표시되어야 할 수도 있습니다).타일링을 캡처하는 데도 사용하지만 이미 내 디자인에 있는 UIImageView에 로드됩니다.이미지()가 더 많은 개체 유형에서도 작동할 수 있을 것으로 예상되지만, 저는 앞서 언급한 것들만 시도했습니다.
UITextView에서 배경색을 .clear로 설정하면 텍스트가 투명 배경으로 저장됩니다.텍스트에 이모지 또는 메모지가 포함되어 있으면 해당 이미지를 카메라 롤이나 앱 내부의 UIImageView로 가져올 수 있습니다.카메라 롤에 투명한 배경을 가진 메모지/에모지가 있으면 다양한 응용 프로그램에서 사용할 수 있습니다.
사진 이미지를 원으로 자르거나 모서리를 잘라내도록 모서리 반지름을 설정하면 다른 개체가 투명해질 수 있습니다.
참고: 내 코드에서 포인터ToTextObjectSelected는 UITextView입니다.
var pointerToTextObjectSelected = UITextView()
// above populated elsewhere
let thisObject = pointerToTextObjectSelected.asImage()
let imageData = thisObject.pngData()
let imageToSave = UIImage(data: imageData!)
UIImageWriteToSavedPhotosAlbum(imageToSave!, nil, nil, nil)
// You will need this extension :
extension UIView {
// Using a function since `var image` might conflict with an existing variable
// (like on `UIImageView`)
func asImage() -> UIImage {
if #available(iOS 10.0, *) {
let renderer = UIGraphicsImageRenderer(bounds: bounds)
return renderer.image { rendererContext in
layer.render(in: rendererContext.cgContext)
}
} else {
UIGraphicsBeginImageContext(self.frame.size)
self.layer.render(in:UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return UIImage(cgImage: image!.cgImage!)
}
}
}
언급URL : https://stackoverflow.com/questions/11131050/how-can-i-save-an-image-to-the-camera-roll
'source' 카테고리의 다른 글
Excel: VBA로 셀이 비어 있는지 확인하는 방법은 무엇입니까? (0) | 2023.05.12 |
---|---|
C#에서 두 어레이를 연결하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
Azure 앱 서비스 플랜을 일시 중지하려면 어떻게 해야 합니까? (0) | 2023.05.07 |
MongoDB: 쿼리를 표준화할 수 없음: BadValue Projection에는 포함과 제외가 혼합되어 있을 수 없습니다. (0) | 2023.05.07 |
"git --bare init" 저장소는 어떻게 사용합니까? (0) | 2023.05.07 |