سؤال

أحصل على نتائج غير متناسقة اعتمادا على ما إذا كنت أحصل على الصورة مباشرة من الكاميرا في رد الاتصال أو اختيارها من لفة الكاميرا.

في ال UIImagePickerControllerDelegate طريقة رد الاتصال، UIImage.imageOrientation يأتي كما UIImageOrientationRight بغض النظر عن كيفية اتخاذ الصورة.

عند قراءة ذلك من لفة الكاميرا، تأتي لقطة مناظر طبيعية (تحولت اليسار) UIImageOrientationUp في حين أن لقطة صورة يأتي UIImageOrientationRight.

كيف يمكنني الحصول على توجيه الكاميرا بشكل موثوق في كلا الحالتين؟

هل كانت مفيدة؟

المحلول

لقد قمت بنشر هذا إلى منتديات أبل، وحصلت على التفسير:

"الكاميرا هي في الواقع المناظر الطبيعية الأصلية، لذلك تستيقظ أو لأسفل عند التقاط صورة في المناظر الطبيعية واليسار أو اليمين عند التقاط صورة في صورة (اعتمادا على كيفية حمل الجهاز).

يرى:

https://devforums.apple.com/message/301160#301160

شكرا:

https://devforums.apple.com/people/rincewind.

نصائح أخرى

لقد جربت خاصية 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];

قبل التقاط الصور في التطبيق الخاص بك. أنا على وشك الذهاب محاولة اختبار هذا بنفسي، لذلك آمل أن يعمل!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top