আমি কীভাবে ক্যামেরা রোলটিতে একটি চিত্র সংরক্ষণ করতে পারি?


126

আমি এক্সকোডে নতুন (৪.৩ ব্যবহার করে) এবং ডিভাইসের ক্যামেরা রোলে কোনও চিত্র কীভাবে সংরক্ষণ করব তা নিশ্চিত নই। আমি এখন পর্যন্ত যা কিছু করেছি তা হল চিত্রটি সংরক্ষণ করার জন্য বোতামের জন্য একটি আইবিএ অ্যাকশন সেটআপ করা। ব্যবহারকারীর ক্যামেরা রোলটিতে কোনও চিত্র সংরক্ষণ করতে আমি কোন লাইব্রেরি পদ্ধতি বা ফাংশন ব্যবহার করতে পারি?

উত্তর:


238

আপনি UIImageWriteToSavedPhotosAlbum()ফাংশন ব্যবহার করুন ।

//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);
}

আসুন ধরা যাক আমার কাছে '- (আইবিএક્શન) অন ক্লিকস্যাভফোটো: (আইডি) প্রেরক;' আমার ভিউকন্ট্রোল.আর ফাইলটিতে আপনার উপরের যা আছে তা ব্যবহার করে, ভিউকন্ট্রোলআরএম ফাইলটিতে আমার ঠিক কী স্থাপন করতে হবে? আবারও অনেক ধন্যবাদ!
ব্যবহারকারী 1470914

1
@ ব্যবহারকারী 1470914 আমার সম্পাদনা দেখুন। এছাড়াও, আপনি ক্যামেরা রোলটিতে চিত্রটি সংরক্ষণ করতে কোথায় পাচ্ছেন? এটি ইতিমধ্যে আপনার অ্যাপ্লিকেশনটির বান্ডেলে রয়েছে, বা ব্যবহারকারী কোনও ছবি তোলেন এবং তারপরে আপনি এটি ক্যামেরার রোলে সংরক্ষণ করুন?
pasawaya

আপনার ধৈর্য কিগাল জন্য ধন্যবাদ। আমার এখন পর্যন্ত এই সমস্যাটি পুনরায় দেখার সুযোগ হয়নি a আপনার এডিট আমাদের সুপার সহায়ক। চিত্রটি অ্যাপের বান্ডেলে রয়েছে। অ্যাপটিতে বেশ কয়েকটি চিত্র রয়েছে এবং সেগুলি ছোট থাম্বনেইল হিসাবে দেখা যেতে পারে। যখন একটি ছোট থাম্বনেইল নির্বাচন করা হয় এটি একটি নতুন দৃশ্যে যায় এবং একটি পূর্ণস্ক্রিন সংস্করণটি দেখা যায়। আমার উপরের নেভের ডান কোণায় একটি বোতাম রয়েছে যা "সংরক্ষণ করুন" বলে এবং এটি বোতামটি যা আমি ইমেজটি ডিভাইসের ক্যামেরাল রোলটিতে সংরক্ষণ করতে চাই যাতে এটি ওয়ালপেপার হিসাবে প্রয়োগ করা যেতে পারে। আপনার সাহায্য এবং ধৈর্য্যের জন্য আবার ধন্যবাদ (কেন ক্যাসারওন এটি বন্ধ করে দিয়েছে তা নিশ্চিত নয়)।
ব্যবহারকারী 1470914

আমি UIImageView *imageToBeSaved;আমার .h ফাইলটিতে যুক্ত করেছি। আমি ভেবেছিলাম যে @synthesize imageToBeSavedআমার। মি তে আমাকে যুক্ত করতে হবে তবে আমি একটি ত্রুটি পেয়েছি যা বলে "সম্পত্তি বাস্তবায়নের ঘোষণার জন্য অনুপস্থিত প্রসঙ্গ"
ব্যবহারকারী 1470914

4
আইওএস 10 থেকে, প্লাস্টে এনএসপি ফটো লাইব্রেরি ইউজেজডেস্ক্রিপশন কী ব্যবহার করা বাধ্যতামূলক। অ্যাপ্লিকেশনটি ক্র্যাশ করে।
ASLLOP

56

ফটো ফ্রেমওয়ার্ক ব্যবহার করে আইওএস 8 + এর একটি উত্তর এখানে।

উদ্দেশ্য গ:

#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
    }
})

অ্যাপলের ডকুমেন্টেশনের লিঙ্ক এখানে ।

ফটো লাইব্রেরিতে অ্যাক্সেসের অনুমতিের জন্য অনুরোধ করতে আপনার তথ্য.পুলিতে উপযুক্ত কী / মান যুক্ত করতে ভুলবেন না:

<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>

2
ছবিটি কীভাবে url @ricardopereira পেতে পারে
মনসুউ ....

@Mansuu দয়া করে একটি চেহারা আছে stackoverflow.com/a/37248867/3641812
ricardopereira

9

রেফারেন্সের জন্য, আপনি একইভাবে ভিডিওগুলি সংরক্ষণ করতে পারেন:

UISaveVideoAtPathToSavedPhotosAlbum(videoPath, nil, nil, nil);

আপনি ইনস্টাগ্রামে আপলোড করতে কোনও ভিডিও সংরক্ষণ করতে চাইতে পারেন, উদাহরণস্বরূপ:

// 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];
}

4

ছবিটি লাইব্রেরিতে সুইফট 4-এ সংরক্ষণ করুন

তথ্য.পিস্টে "গোপনীয়তা - ফটো লাইব্রেরি সংযোজনগুলির ব্যবহারের বিবরণ" যুক্ত করুন

তারপরে চিত্রটি সংরক্ষণ করতে নিম্নলিখিত কোডটি ব্যবহার করুন

UIImageWriteToSavedPhotosAlbum(imageView.image!, nil, nil, nil)

0

ক্যামেরা রোলে সংরক্ষণ করতে অনন্য সামগ্রী পেতে AsImage () ব্যবহার করুন।

আপনি যদি ইমেজ () ব্যবহার করেন তবে কয়েকটি মাত্র লাইনের কোডের সাহায্যে আপনি বিভিন্ন মজাদার জিনিস ক্যামেরা রোলে সংরক্ষণ করতে পারেন! এটি খুব শক্তিশালী হতে পারে যদি অবজেক্টটিতে ইতিমধ্যে কিছু স্বচ্ছতা অন্তর্ভুক্ত থাকে।

অ্যাসিমেজ () ইউআইটিএক্সেক্সটভিউ, ডব্লিউকেউইউব ভিউ, ইউআইআইমেজভিউ, ইউআইবাটন, ইউআইস্লাইডার, ইউআইটিবেল ভিউয়ের সাথে কিছু বস্তুর নাম লেখার জন্য কাজ করে (তবে আপনি যখন চিত্রটি পাবেন (তখন কোনও শূন্য ন্যূনতম আলফা রয়েছে) এটি দৃশ্যমান হতে পারে)। এমনকি আমি এটি টাইলিং ক্যাপচার করতেও ব্যবহার করি তবে এটি আমার ডিজাইনে ইতিমধ্যে একটি ইউআইআইমেজভিউতে লোড হয়েছে। আমি সন্দেহ করি যে ইমেজ () আরও অনেকগুলি অবজেক্টের ধরণের সাথেও কাজ করতে পারে তবে আমি কেবলমাত্র আমি উল্লিখিতগুলির জন্যই চেষ্টা করেছি।

যদি এটি কোনও ইউআইটিএক্সটভিউ হয় এবং আপনি ব্যাকগ্রাউন্ডের রঙ। ক্লিয়ারে সেট করেন তবে স্বচ্ছ পটভূমিতে পাঠ্যটি সংরক্ষণ করা হবে। যদি আপনার পাঠ্যে ইমোজি বা মেমোজি থাকে তবে আপনি এখন সেই চিত্রগুলি ক্যামেরা রোলে, বা আপনার অ্যাপ্লিকেশনের অভ্যন্তরীণ ইউআইআইভিজভিউতে পেতে পারেন। আপনার ক্যামেরা রোলটিতে স্বচ্ছ পটভূমিতে মেমোজি / ইমোজি থাকা যেখানে তারা যে কোনও ধরণের অ্যাপ্লিকেশনে ব্যবহার করতে পারে তা শক্তিশালী।

আপনি যদি কোনও চক্রে কোনও ছবি চিত্র ক্রপ করেন বা কোণে ব্যধি ছড়িয়ে দেওয়ার জন্য কোণার ব্যাসার্ধটি সেট করেন তবে অন্য অবজেক্টগুলির কিছুটা স্বচ্ছতা থাকতে পারে।

আমার কোডে নোট করুন, পয়েন্টারটেক্সটঅবজেক্টসিলেক্ট একটি ইউআইটিেক্সটভিউ


var pointerToTextObjectSelected = UITextView()
// above populated elsewhere

let thisObject = pointerToTextObjectSelected.asImage()

let imageData = thisObject.pngData()

let imageToSave = UIImage(data: imageData!)

UIImageWriteToSavedPhotosAlbum(imageToSave!, nil, nil, nil)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.