يتم عرض ألوان RGB كـ BRG بعد العرض على نظام التشغيل MAC OS X
-
21-12-2019 - |
سؤال
عندما نحاول عرض الصورة، يتم عرض الصورة حيث يتم تبادل القيم الحمراء والزرقاء،
{
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
لا تنتمي إلى StackOverflow