سؤال

التطبيق الذي أقوم بإنشاء تحميل الصور في أربعة (الرابعة هي وظيفة اختبار)؛

1. بالكامل من UiimagePickerController مع UiimagePickercontrollersourcetypecamera مثل هذا:

//didFinishPickingImage method
if ([picker sourceType] == UIImagePickerControllerSourceTypeCamera)
{
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
}

CGRect myImageRect = CGRectMake(30.0f, 190.0f, 250.0f, 210.0f); 
myImage = [[UIImageView alloc] initWithFrame:myImageRect];
//released in dealloc because I reuse it alot

myImage.image = img;
[self.view addSubview:myImage]; 

2. اختيار مباشرة من مكتبة الصور أيضا باستخدام

myImage.image = img;

3.using الصورة المحفوظة من 1.

pathFile = @"/private/var/mobile/Media/DCIM/100APPLE/"; 
NSString *ImagePath = [pathFile stringByAppendingString:imageFileName];
NSData *imageDataFile = [NSData dataWithContentsOfFile:ImagePath];  

UIImage *img = [UIImage imageWithContentsOfFile:ImagePath];

myImage.image = img;

4.As وظيفة الاختبار: استخدام صورة مأخوذة من تطبيق كاميرا iPhone الافتراضي (نفس UiimagePickerController) ولكن باستخدام ImagePath بدلا من UiimagePickerController، UiimagePickerControllersourcetypephotolibrary.

//Same as Number 3.
pathFile = @"/private/var/mobile/Media/DCIM/100APPLE/"; 
NSString *ImagePath = [pathFile stringByAppendingString:imageFileName];
NSData *imageDataFile = [NSData dataWithContentsOfFile:ImagePath];  

UIImage *img = [UIImage imageWithContentsOfFile:ImagePath];

myImage.image = img; 

* حتى هنا، يمكن للمستخدم رؤية الملف في أي من الطرق الأربع على الشاشة التي تمت إضافتها إلى مثيل Myimage of UiimageView (اعتمادا على اختيار المستخدم). هذا يثبت أنني أختار الملفات الصحيحة (لمدة ثلاثة وأربعة).

//uploading function

NSData *imageData = UIImageJPEGRepresentation(myImage.image, 1.0);


NSMutableURLRequest *request2 = [[[NSMutableURLRequest alloc] init] autorelease];
            [request2 setURL:[NSURL URLWithString:urlString]];
            [request2 setHTTPMethod:@"POST"];

NSMutableData *body = [NSMutableData data];
//... append boundary, content-disposition code etc here.
[body appendData:[NSData dataWithData:imageData]];
[request setHTTPBody:body];

المشكلة هي أنه عند التحميل والعدد 1،2 و 4 العمل، رقم 3 لا.

ناتج وحدة تلقى البرنامج إشارة: "exc_bad_access"

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

سأقدر حقا طرقا لحل هذه المشكلة.

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

المحلول

قام iPhone OS بإنشاء مجلد آخر "/ خاص / Var / Mobile / Media / DCIM / 101Apple /" مختلف عن 100APPLE الافتراضي.

أدركت أنه في بعض الأحيان يتم حفظ الصور في بعض الأحيان أيضا في مجلد 999APPLE، 102APPLE إلخ. هذا يعتمد على كيفية حذف وصور وإنشاء الصور في لفة الكاميرا.

لذلك يمكن تخزين صور الكاميرا لفة الخاص بك في العديد من مجلدات مختلفة.

لذلك، عدم القدرة على التنفيذ [NSData dataWithContentsOfFile:ImagePath];, ، يلقي الاستثناء:

"exc_bad_access"

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