美文网首页
CGBitMap 小计

CGBitMap 小计

作者: 呆木大人 | 来源:发表于2018-05-07 16:44 被阅读173次

创建context

CGBitmapContextCreate(<#void * _Nullable data#>,  //指向要渲染的绘制内存的地址
                       <#size_t width#>,     //width * scale
                       <#size_t height#>,    //height *scale
                       <#size_t bitsPerComponent#>,   //内存中像素的每个组件的位数 对于32位像素格式和RGB 颜色空间,你应该将这个值设为8
                       <#size_t bytesPerRow#>,   //每一行在内存所占的比特数
                       <#CGColorSpaceRef  _Nullable space#>,     //上下文使用的颜色空间
                       <#uint32_t bitmapInfo#>  //指定bitmap是否包含alpha通道,像素中alpha通道的相对位置,像素组件是整形还是浮点型等信息的字符串
                      )


针对bitmapInfo字段做一些备注

1. CGBitmapInfo

  • 这个主要说一下kCGBitmapByteOrder32Little / kCGBitmapByteOrder32Big
  • kCGBitmapByteOrder32Little 生成的信息位置为: 倒序
  • kCGBitmapByteOrder32Big 生成的信息位置为: 顺序
typedef CF_OPTIONS(uint32_t, CGBitmapInfo) {
    kCGBitmapAlphaInfoMask = 0x1F,

    kCGBitmapFloatInfoMask = 0xF00,
    kCGBitmapFloatComponents = (1 << 8),

    kCGBitmapByteOrderMask     = kCGImageByteOrderMask,
    kCGBitmapByteOrderDefault  = kCGImageByteOrderDefault,
    kCGBitmapByteOrder16Little = kCGImageByteOrder16Little,
    kCGBitmapByteOrder32Little = kCGImageByteOrder32Little,
    kCGBitmapByteOrder16Big    = kCGImageByteOrder16Big,
    kCGBitmapByteOrder32Big    = kCGImageByteOrder32Big
} CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);

2. CGImageAlphaInfo

  • 这个主要说一下 kCGImageAlphaPremultipliedLast / kCGImageAlphaPremultipliedFirst
  • kCGImageAlphaPremultipliedLast >>>> R G B A
  • kCGImageAlphaPremultipliedFirst >>>> A R G B
typedef CF_ENUM(uint32_t, CGImageAlphaInfo) {
    kCGImageAlphaNone,               /* For example, RGB. */
    kCGImageAlphaPremultipliedLast,  /* For example, premultiplied RGBA */
    kCGImageAlphaPremultipliedFirst, /* For example, premultiplied ARGB */
    kCGImageAlphaLast,               /* For example, non-premultiplied RGBA */
    kCGImageAlphaFirst,              /* For example, non-premultiplied ARGB */
    kCGImageAlphaNoneSkipLast,       /* For example, RBGX. */
    kCGImageAlphaNoneSkipFirst,      /* For example, XRGB. */
    kCGImageAlphaOnly                /* No color data, alpha data only */
};

说了这么多 举个栗子

    //顺序  +   argb  = argb
    kCGImageByteOrder32Big | kCGImageAlphaPremultipliedFirst  
    const int RED = 1;
    const int GREEN = 2;
    const int BLUE = 3;
    const int ALPHA = 0;

    //顺序  +   rgba  = rgba
    kCGImageByteOrder32Big | kCGImageAlphaPremultipliedLast 
    const int RED = 0;
    const int GREEN =1;
    const int BLUE = 2;
    const int ALPHA = 3;


    //倒序   +  rgba   = abgr
    kCGImageByteOrder32Little | kCGImageAlphaPremultipliedLast
    const int RED = 3;
    const int GREEN = 2;
    const int BLUE = 1;
    const int ALPHA = 0;

    //倒序 + argb = bgra;
    //kCGImageByteOrder32Little | kCGImageAlphaPremultipliedFirst
    const int RED = 2;
    const int GREEN = 1;
    const int BLUE = 0;
    const int ALPHA = 3;

相关文章

  • CGBitMap 小计

    创建context 针对bitmapInfo字段做一些备注 1. CGBitmapInfo 这个主要说一下kCGB...

  • 2019-07-31

    统计不是“小计”的个数。如果是小计就回“空”,不是小计就按顺序排列。image.png 如果是小计就回“空”,不是...

  • 日记6

    小计划 学英语开始

  • 2020-07-03

    今日: 消费项目 小计 早餐 ...

  • 小计

    我觉得,我应该每天都写一下日记,记录下我自己的心里路程。 知道自己在干什么。 知道要怎么干。 做了那些事,有什么结...

  • 小计

    一个阴谋的结束,必定是另一个阴谋的开始。没人能逃过结局的宿命。你无法确定将来的态势,唯要做的就是始于脚下,做好眼前的事。

  • 小计

    今天比较烦躁,因为我早早的上床睡觉了,上床睡觉因为眼睛酸痛,累了,我决定明天早上五点半起床,看半个小时书,完成工作...

  • 小计

    人堕落起来不需要什么成本,为排遣无所事事的空虚和寂寞,总会找更多无聊的事来填满这种空虚。 一个人,有最好的状...

  • 小计

    又是一周下雨天,小暖从沙发上坐起,慢慢走向窗外。 这是小暖第三次看见他了,他每次都会戴着耳机,在树下安静的看...

  • 小计

    荷西:你是不是一定要嫁个有钱人。三毛:如果我不爱他,他是百万富翁我也不嫁,如果我爱他,他是千万富翁我也嫁。荷西:说...

网友评论

      本文标题:CGBitMap 小计

      本文链接:https://www.haomeiwen.com/subject/attvrftx.html