CGBitmapContextGetData 什么都不返回
CGBitmapContextGetData returning nothing
我想获取上下文的像素信息
我不知道为什么每个return都是空的
屏幕截图显示代码工作正常,但数据被视为字符数据,但事实并非如此。
由于变量 bitmapData
声明为 char*
,调试器将其视为以 null 结尾的 C 字符串。它显示:""
。这表示 bitmapData
不为空,但以空字符开头。
原始像素数据不是字符串,也不是字符数据。所以不能用strlen()
。而且不可能用 printf("%c")
.
显示它
bitmapData
只是指向原始位图数据的指针。给定 bitmapData
,无法推导出数据的长度。查询数据长度的唯一安全方法是调用:
int length = CGBitmapContextGetBytesPerRow(context) * CGBitmapContextGetHeight(context);
由于您使用每像素 32 位创建位图,我建议将 bitmapData
声明为 uint32_t*
。那么数组中的每个元素对应一个像素。
我想获取上下文的像素信息
我不知道为什么每个return都是空的
屏幕截图显示代码工作正常,但数据被视为字符数据,但事实并非如此。
由于变量 bitmapData
声明为 char*
,调试器将其视为以 null 结尾的 C 字符串。它显示:""
。这表示 bitmapData
不为空,但以空字符开头。
原始像素数据不是字符串,也不是字符数据。所以不能用strlen()
。而且不可能用 printf("%c")
.
bitmapData
只是指向原始位图数据的指针。给定 bitmapData
,无法推导出数据的长度。查询数据长度的唯一安全方法是调用:
int length = CGBitmapContextGetBytesPerRow(context) * CGBitmapContextGetHeight(context);
由于您使用每像素 32 位创建位图,我建议将 bitmapData
声明为 uint32_t*
。那么数组中的每个元素对应一个像素。