سؤال

عندما نحاول عرض الصورة، يتم عرض الصورة حيث يتم تبادل القيم الحمراء والزرقاء،

      {

    colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);

        ...

    cgctx = CGBitmapContextCreate (bitmapData,
                                pixelsWide,
                                pixelsHigh,
                                8,      // bits per component
                                bitmapBytesPerRow,
                                colorSpace,
                                kCGImageAlphaPremultipliedLast);

 }

إذا كنت أستخدم kCGImageAlphaPremultipliedFirst بدلاً من kCGImageAlphaPremultipliedLast فإن الصورة مختلفة تمامًا والآن أجد اللونين الأخضر والأحمر ويتم تبادلهما قليلاً.

من فضلك النصيحة.

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

المحلول

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

#if __BIG_ENDIAN__ bitmap_info = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Big; #else bitmap_info = kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Little; #endif

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