bmp32 转24 android,iOS 用代码如何实现把32位的BMP图片转成24位BMP图片

不多说废话了,直接用代码说话,如你是大神路过勿喷,有错误的还望各位指正,共同学习进步:

/**

*获取由32位的BMP位图NSData数据转换得到24位的BMP位图NSData数据

*在子线程执行任务,执行完后使用block回调

*

*

*特别说明:传进来的参数和返回的数据都是不包括位图的头部文件Bitmap file header的

*我这里是根据硬件那边的需要,已经把格式规定死了,是一个width*height->480*800大小的BMP图片

*这个方法是使用block的回到

*

*@param bitmap_32bit_data32位的BMP位图NSData数据

*@param ConvertBitmapBlock 24位的BMP位图NSData数据

*

*

*实例:

*32位的一个像素点数值是:123150ff --->传入参数

*去掉alpha值后得到24位的一个像素点,其数值是:123150

*然后将得到的24位像素点的数值转换成需要发送的数据类型即NSData类型

*NSData里面的bytes存储的就是“123150”这个字符串每个数字对应的ASCII码49 50 51 49 53 48

*的十六进制数31 32 33 31 35 30。

*/

+ (void)convertBitmap_24bit_dataWithBitmap_32bit_data:(NSData*)bitmap_32bit_data

blockCompletion:(ConvertBitmap24bitData)ConvertBitmapBlock{

if(bitmap_32bit_data ==nil) {

return;

}

//获取系统创建的主队列,主队列的生命周期跟进程的一致

dispatch_queue_tglobalQueue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

dispatch_async(globalQueue, ^{

NSString*perPixelString = [NSStringstring];

NSData*tempData = [NSDatadata];

NSMutableData*bitmap_24bit_mdata = [NSMutableDatadata];

constunsignedchar*p = [bitmap_32bit_databytes];

intflag =0;

for(inti =0; i < [bitmap_32bit_datalength]; i++) {

if(flag ==3) {

p++;

flag =0;

}else{

flag++;

perPixelString = [NSStringstringWithFormat:@"%02x",*p++];

tempData = [ConversionToolconvertNSDataFromHexString:perPixelString];

[bitmap_24bit_mdataappendData:tempData];

}

}

ConvertBitmapBlock(bitmap_24bit_mdata);

});

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值