الكشف عن اتجاه كاميرا iPhone
-
05-09-2019 - |
سؤال
أحصل على نتائج غير متناسقة اعتمادا على ما إذا كنت أحصل على الصورة مباشرة من الكاميرا في رد الاتصال أو اختيارها من لفة الكاميرا.
في ال UIImagePickerControllerDelegate
طريقة رد الاتصال، UIImage.imageOrientation
يأتي كما UIImageOrientationRight
بغض النظر عن كيفية اتخاذ الصورة.
عند قراءة ذلك من لفة الكاميرا، تأتي لقطة مناظر طبيعية (تحولت اليسار) UIImageOrientationUp
في حين أن لقطة صورة يأتي UIImageOrientationRight
.
كيف يمكنني الحصول على توجيه الكاميرا بشكل موثوق في كلا الحالتين؟
المحلول
لقد قمت بنشر هذا إلى منتديات أبل، وحصلت على التفسير:
"الكاميرا هي في الواقع المناظر الطبيعية الأصلية، لذلك تستيقظ أو لأسفل عند التقاط صورة في المناظر الطبيعية واليسار أو اليمين عند التقاط صورة في صورة (اعتمادا على كيفية حمل الجهاز).
يرى:
https://devforums.apple.com/message/301160#301160
شكرا:
نصائح أخرى
لقد جربت خاصية ImageOrentation بعد أن تم التقاط الصورة، إنه أمر مضحك لأن لدي قيم الاتجاه افسدت. تم ترك UP، أسفل هو الصحيح، اليسار إلى أسفل واليمين هو أعلى، على سبيل المثال، إذا كنت أحمل iPhone "أعلى" (الوضع العادي) ثم ImageOrentation هو "UiimageorientationRight".
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingImage:(UIImage *)image
editingInfo:(NSDictionary *)editingInfo {
switch (image.imageOrientation) {
case UIImageOrientationUp: //Left
break;
case UIImageOrientationDown: //Right
break;
case UIImageOrientationLeft: //Down
break;
case UIImageOrientationRight: //Up
break;
default:
break;
}
}
حاليا أنا أستخدم 4.1 SDK GM (Xcode_3.2.4_and_ios_sdk_4.1_gm_seed) الاستهداف ل iOS 3.1
لقد قرأت مكان ما أن uiimagePickerController لا يقوم بتشغيل الاستماع إلى أحداث توجيه الأجهزة، لذلك قد تحتاج إلى الاتصال
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
قبل التقاط الصور في التطبيق الخاص بك. أنا على وشك الذهاب محاولة اختبار هذا بنفسي، لذلك آمل أن يعمل!