我有一个要求,我必须将图像从ios设备发送到另一个设备corebluetooth,其他设备是BLE设备。
基本需求是:
1)图像尺寸应为128X160
2)8位,即每种颜色8位
3)3个频道
4)每像素24位
5)图像应该有61440个字节,即(3X128X160)
要获得3个频道和24个每像素我使用下面的OpenCV代码,就像在本机ios中我找到选项将UIImage转换为24位位图
//uiimg is 128X160 size
cv::Mat image;
cv::Mat convertedImage;
UIImageToMat(uiimg, image);
cvtColor(image, convertedImage, CV_RGBA2BGR);
如果我检查一个字节的数量和每个像素的位数,那么它出现如下
img = MatToUIImage(convertedImage);
size_t bytesPerRow1 = CGImageGetBytesPerRow(img.CGImage); // It gives 3, seems like correct which is needed
size_t total = bytesPerRow1 * img.size.height; //it gives 61440, seems like correct which is need
但是当我将这个UIImage转换为NSDate然后检查[NSData bytes]然后它给了我39087bytes。
根据计算结果如何,图像中的字节数应为61440,为128X3X160。
任何人都可以告诉我们为什么会有区别。
此外,NSdata是像
这样的数据< 89504e47 0d0a1a0a 0000000D 49484452 00000080 08020000 000000a0 004bf0f3 aa000000 01735247 4200aece 1ce90000 001c6944 4f540000 00020000 00000000 00500000 00280000 00500000 00500000 90340000 3d3e90d2 3d0a4944 41547801 d4bd0774 1cc7b926 3a67c3dd f7eededd .....等>
但根据我的要求,我每次都要发送一个字节。发送数据应为0x41,0x72等类型。
我可以使用NSData的GetByte方法获取像0x41,0x72这样的数据。但是在Corebluetooth中我们必须在NSData中发送数据,所以我必须将0x41,0x72转换为NSData。
我可以将数据作为NSData发送,是否与发送0x41,0x72相同?
为什么NSData字节数和基于计算的字节数存在差异
任何帮助都会得到高度赞赏
由于