سؤال

UiimageWritetOtoSavedPhotosalBum يعمل فقط في بعض الأحيان. في بعض الأحيان يعمل ، وأحيانًا لا يعمل ، نفس الوظيفة بالضبط.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
NSLog(@"Saving image to camera roll...");
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
NSLog(@"Done!"); }

أنا أستخدم وحدة تحكم UIImagePicker للحصول على الصورة التي تستدعي هذه الوظيفة.

في بعض الأحيان يحفظها على لفة الكاميرا ، وفي بعض الأحيان لا تفعل ذلك ببساطة.

أي شخص لديه أي فكرة؟

شكرا لك مقدما.

تعديل:

طريقة الانتهاء لـ UIImageWritetOsavedPhotosalBum في وقت ما تُرجع خطأً من:

wait_fences: failed to receive reply: 10004003
هل كانت مفيدة؟

المحلول

أود أن أبدأ بإضافة طريقة هدف الانتهاء إلى استدعاء حفظ لمعرفة ما إذا كانت تنتج أي أخطاء. انظر UIImageWriteToSavedPhotosAlbum الوثائق للحصول على التفاصيل.

تعديل:

واحدة من الأوقات التي عادت ... WAIT_FENS: فشل في تلقي الرد: 10004003

وهذا يعني أن العملية توقيت. هناك العديد من أسباب هذا:

  1. ذاكرة منخفضة: ضع تسجيل الدخول didReceiveMemoryWarning لمعرفة ما إذا كان هذا هو السبب.
  2. الملفات الفاسدة التي لا يستطيع النظام حفظها. إذا تم إنشاء الصورة في كل مرة قد لا تخرج بشكل صحيح في كل مرة.
  3. تم الإبلاغ عن خطأ في القرص الكامل.

أعتقد (1) على الأرجح ويشرح الطبيعة المتقطعة. عندما يكون لديك ذاكرة كافية ، تعمل الطريقة وعندما لا تفشل.

بالإضافة إلى ذلك ، عند التجميع ، حل أي تحذيرات تظهر. هذه مجرد أخطاء لن تظهر حتى وقت التشغيل. قد يتم سرد مشكلة هناك

نصائح أخرى

آمل ألا يكون هذا الإجابة متأخراً جدًا حتى تكون مفيدة. واجهت نفس المشكلة بالضبط. كما اتضح أن القضية ذات شقين. أولاً ، يجب الاحتفاظ بالصورة قبل إرسالها إلى UiimageWritetOsaVedPhotosalBum. ثانياً ، على أجهزة ما قبل IPONE4 ، يمكن لهذه الوظيفة أن تستغرق وقتًا طويلاً للقيام بعملها. كان الإصلاح الذي وجدته هو تنفيذ وظيفة رد الاتصال. انظر الوثائق الخاصة بـ UiimageWritetOsavedPhotosalBum حول هذا. يجب أن تكون الوظيفة بالتنسيق الصحيح ، لا يمكنك فقط استخدام أي وظيفة قديمة. في هذه الوظيفة ، تأكد من إطلاق الصورة التي احتفظت بها أو ستسرب الذاكرة. يمكنك أيضًا استخدام هذا لتتبع وقت الانتهاء من الحفظ. ها هو الرمز الأساسي أدناه:

    -(void)processImage:(UIImage *)image {
        [image retain];
        UIImageWriteToSavedPhotosAlbum(reconstructedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}


    - (void)image:(UIImage *) image didFinishSavingWithError: (NSError *) error contextInfo: (void *) contextInfo {
        NSLog(@"SAVE IMAGE COMPLETE");
        if(error != nil) {
            NSLog(@"ERROR SAVING:%@",[error localizedDescription]);
        }
        [image autorelease];
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top