Ios 从UIImage获取二进制数据
我有一个要求,我必须将图像从ios设备发送到另一个设备。其他设备是蓝牙设备 基本需要是: 1) 图像大小应为128X160 2) 8位,即每种颜色8位 3) 3频道 4) 每像素24位 5) 图像应具有61440个字节,即(3X128X160) 为了获得3通道和每个pixcel 24位的图像,我使用了OpenCV的以下代码,就像在本机ios中一样,我使用dint find选项将UIImage转换为24位位图Ios 从UIImage获取二进制数据,ios,image,bitmap,binary,core-bluetooth,Ios,Image,Bitmap,Binary,Core Bluetooth,我有一个要求,我必须将图像从ios设备发送到另一个设备。其他设备是蓝牙设备 基本需要是: 1) 图像大小应为128X160 2) 8位,即每种颜色8位 3) 3频道 4) 每像素24位 5) 图像应具有61440个字节,即(3X128X160) 为了获得3通道和每个pixcel 24位的图像,我使用了OpenCV的以下代码,就像在本机ios中一样,我使用dint find选项将UIImage转换为24位位图 //uiimg is 128X160 size cv::Mat image; cv::
//uiimg is 128X160 size
cv::Mat image;
cv::Mat convertedImage;
UIImageToMat(uiimg, image);
cvtColor(image, convertedImage, CV_RGBA2BGR);
如果我检查BYT的数量和每个像素的位数,那么结果如下
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字节]时,它会给我39087字节
根据计算,图像中的BYT数量应为61440,为128X3X160
有人能告诉我为什么会有不同吗
此外,NSdata是类似于
但根据我的要求,我每次必须发送一个字节。发送数据的类型应为0x41、0x72等
我可以使用NSData的GetByte方法获得类似0x41,0x72的数据。但在Corebluetooth中,要在设备上写入数据,我们必须只发送NSData中的数据,所以我必须再次将0x41,0x72转换为NSData
我可以将数据作为NSData发送吗?它是否与发送0x41,0x72相同
为什么NSData字节计数和基于计算的字节计数存在差异
任何帮助都将不胜感激
谢谢您从何处获取原始图像?另外,通过谷歌搜索“uiimage获取位图数据”,我发现:@fspirit,图像被放在捆绑包中。然后读取并解压缩到位图,如我之前发布的链接所示。我们可以从NSData仅获取24位位图吗?