في iOS 10.0 وما بعدها، تم تعديل طريقة الحصول على الصور من الكاميرا باستخدام AVCapturePhotoOutput
بدلاً من AVCaptureStillImageOutput
الذي تم إهماله. لاحظ أن هذا التغيير يعني أن الكثير من الأكواد التي كتبتها ستحتاج إلى تعديل لتتوافق مع الطريقة الجديدة للحصول على الصور.
للاستفادة من AVCapturePhotoOutput
، يجب أولاً تحديث الشيفرة لتعيينه كإخراج لجلسة التقاط الفيديو (AVCaptureSession
) بدلاً من AVCaptureStillImageOutput
. يمكنك القيام بذلك على النحو التالي:
-
كيفية إرسال البريد الإلكتروني في Oracle07/03/2024
-
حل مشكلة ‘A get or set accessor expected’11/03/2024
-
تحديث مشكلة CGPointMake في Swift 324/03/2024
swiftvar photoOutput: AVCapturePhotoOutput?
// إنشاء وتهيئة AVCapturePhotoOutput
photoOutput = AVCapturePhotoOutput()
// إضافة AVCapturePhotoOutput إلى جلسة التقاط الفيديو
if let session = captureSession {
if session.canAddOutput(photoOutput) {
session.addOutput(photoOutput!)
}
}
// تحديث دالة التقاط الصورة
func clickPicture() {
let settings = AVCapturePhotoSettings()
photoOutput?.capturePhoto(with: settings, delegate: self)
}
في هذا المثال، يتم إنشاء كائن AVCapturePhotoOutput
وإضافته إلى جلسة التقاط الفيديو captureSession
. ثم، يتم استخدام دالة capturePhoto
لالتقاط الصورة باستخدام الإعدادات الافتراضية وتوجيه المعالجة إلى self
، مما يعني أن الفئة الحالية يجب أن تتبع AVCapturePhotoCaptureDelegate
لمعالجة الصورة الملتقطة.
تحتاج أيضًا إلى تحديث دالة المعالجة لتتفق مع AVCapturePhotoCaptureDelegate
. يمكنك فعل ذلك على النحو التالي:
swiftextension YourViewController: AVCapturePhotoCaptureDelegate {
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
if let imageData = photo.fileDataRepresentation() {
let image = UIImage(data: imageData)
// استخدم الصورة هنا
}
}
}
تأكد من استبدال YourViewController
باسم الفئة الخاصة بك التي تستخدم فيها هذا الكود.
المزيد من المعلومات
بالطبع! AVCapturePhotoOutput
توفر واجهة أكثر قوة ومرونة لالتقاط الصور مقارنةً بـ AVCaptureStillImageOutput
. تسمح لك AVCapturePhotoOutput
بتخصيص إعدادات الكاميرا مثل التعرض والفلاش والتأثيرات البصرية، وتتيح لك الحصول على صور بتنسيقات متعددة مثل HEIF وJPEG.
إلى جانب ذلك، توفر AVCapturePhotoOutput
طرقًا لمعالجة الصور بعد التقاطها، مما يتيح لك إضافة مؤثرات وتحسينات إلى الصور قبل حفظها أو مشاركتها. يمكنك أيضًا التحكم في عمليات الالتقاط المتقدمة مثل الالتقاط المتعدد (التقاط أكثر من صورة في وقت واحد) والالتقاط المتتابع (التقاط سلسلة من الصور بسرعة عالية).
باستخدام AVCapturePhotoOutput
، يمكنك أيضًا الوصول إلى ميزات متقدمة مثل تقديم المعاينة الحية لما يتم التقاطه والتحكم في إعدادات الكاميرا الديناميكية أثناء التقاط الصور.
باختصار، AVCapturePhotoOutput
هو الطريقة المستقبلية لالتقاط الصور في تطبيقات iOS، ويوفر مزايا كبيرة مقارنة بالطرق القديمة.