سؤال

أنا أحاول تعديل القيم بكسل (8 بت لكل قناة RGBA) قبل عدديا زيادة/خفض قيم كمية معينة.كيف يمكنني أن أفعل هذا في الهدف-C أو C ؟ التعليمة البرمجية التالية يولد "خطأ:EXC_BAD_ACCESS"في كل مرة.

// Try to Increase RED by 50
    for(int i = 0; i < myLength; i += 4) {

        //NSLog prints the values FINE as integers
            NSLog(@"(%i/%i/%i)", rawData[i], rawData[i+1], rawData[i+2]);

            //But for some reason I cannot do this
        rawData[i]+=50;

}

وحتى

// Try to set RED to 50
    for(int i = 0; i < myLength; i += 4) {

            //I cannot even do this...
        unsigned char newVal = 50;
        rawData[i] = 50;

}

وي: rawData هو المخزن المؤقت للبيانات من نوع char غير الموقعة

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

المحلول

فمن الممكن أن كنت اجتياح نهاية المخزن المؤقت المخصص, و هذا هو السبب في أنك تحصل على انتهاك وصول.وهذا يعني على الأرجح أن الرياضيات هو الخطأ في تخصيص أو rawData مؤشر من نوع خاطئ.

إذا كنت الوصول إلى البيانات الخام من تحميل UIImage ، قد يكون تعيينها في ذاكرة للقراءة فقط.كنت بحاجة إلى نسخ البيانات إلى المخزن المؤقت التي خصصت الأرجح.

نصائح أخرى

همم...ما rawdata?ربما انها const من النوع الذي لا يمكن تعديل?

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