创建context
1 | CGBitmapContextCreate(<#void * _Nullable data#>, //指向要渲染的绘制内存的地址 |
针对bitmapInfo字段做一些备注
1. CGBitmapInfo
- 这个主要说一下
kCGBitmapByteOrder32Little/kCGBitmapByteOrder32Big kCGBitmapByteOrder32Little生成的信息位置为:倒序kCGBitmapByteOrder32Big生成的信息位置为:顺序1
2
3
4
5
6
7
8
9
10
11
12
13typedef 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 AkCGImageAlphaPremultipliedFirst>>>>A R G B1
2
3
4
5
6
7
8
9
10typedef 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 */
};
说了这么多 举个栗子
1 | //顺序 + argb = argb |