البرمجة

حفظ صورة من UIImageView إلى Camera Roll

في Swift، يمكنك حفظ الصورة المعروضة في UIImageView إلى Camera Roll بعد تحميلها من الإنترنت. يمكنك استخدام دالة UIImageWriteToSavedPhotosAlbum لحفظ الصورة، ولكنك بحاجة إلى أولاً استخراج UIImage من UIImageView. هناك طريقتين للقيام بذلك، إما عن طريق استخدام الصورة المعروضة مباشرة، أو من خلال إعادة تحميل الصورة من العنوان URL.

هذا مثال بسيط يوضح كيفية القيام بذلك:

swift
import UIKit class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // Load the image from URL let url = URL(string: "https://example.com/image.jpg") let data = try? Data(contentsOf: url!) imageView.image = UIImage(data: data!) } @IBAction func saveImage(_ sender: Any) { // Check if there's an image in the image view guard let image = imageView.image else { return } // Save the image to the camera roll UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) } }

في هذا المثال، قمنا بتحميل الصورة من عنوان URL وعرضها في UIImageView. ثم، عند الضغط على زر “حفظ الصورة”، سيتم حفظ الصورة المعروضة حاليًا في UIImageView إلى Camera Roll. تأكد من إضافة الإذن المناسب في ملف Info.plist للسماح بالوصول إلى مكتبة الصور.

المزيد من المعلومات

بالطبع! في الكود السابق، نقوم بتحميل الصورة من عنوان URL وعرضها في UIImageView. ومن ثم، عند الضغط على زر “حفظ الصورة”، يتم حفظ الصورة المعروضة حاليًا في UIImageView إلى Camera Roll.

لاحظ أن استخدام Data(contentsOf: url!) لتحميل الصورة يمكن أن يؤدي إلى تجميد واجهة المستخدم (UI freeze) أثناء تحميل الصورة، لأن هذه العملية تتم بشكل متزامن. لتجنب ذلك، يمكنك استخدام عملية تحميل غير متزامنة مثل URLSession:

swift
let url = URL(string: "https://example.com/image.jpg") URLSession.shared.dataTask(with: url!) { (data, response, error) in guard let data = data, error == nil else { return } DispatchQueue.main.async { self.imageView.image = UIImage(data: data) } }.resume()

باستخدام هذا الكود، سيتم تحميل الصورة بشكل غير متزامن، مما يحافظ على استجابة واجهة المستخدم.

أيضًا، يجب عليك التأكد من أن تقوم بإضافة الإذن المناسب في ملف Info.plist للسماح بالوصول إلى مكتبة الصور. يمكنك إضافة الإذن بالشكل التالي:

xml
<key>NSPhotoLibraryAddUsageDescriptionkey> <string>Need permission to save photosstring>

عندما تحاول تحميل صورة من الإنترنت، يجب عليك أيضًا التحقق من الإتصال بالإنترنت والتعامل بشكل مناسب مع أية أخطاء تحدث أثناء التحميل.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر