热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大家好,我得到了Bitmap图片的R.G.B像素值.但要保存进一个USHORT数组.如内容...

这个16bit的数组要求是565的格式,如下:B4B3B2B1B0G5G4G3G2G1G0R4R3R2R1R0但24位的图片一个像素占24bit.即RGB分别占一个字节,如何能转为16bit呢
这个16bit的数组要求是565的格式,如下:

B4B3B2B1B0G5G4G3G2G1G0R4R3R2R1R0

但24位的图片一个像素占24bit.即RGB分别占一个字节,如何能转为16bit呢?

高手请帮我烟酒下...谢谢!

7 个解决方案

#1


你是要把16bit图像转成24bit? 还是反过来,把24bit图像转成16bit?

看你问题的前2行,好像已经有16bit图像了,但看后2行,则又是想要16bit图像!

#2


用三个掩码提取RGB值,归一化到8位,做一圈就好了。

#3


是从24转到16bit啊,楼上的可以详细点吗?,非常感谢!

#4


诶,别说,我最近正在做这个
按如下代码实现
#define _RGB16BIT565(r,g,b) ((b & 31) + ((g & 63) << 5) + ((r & 31) << 11))

*bitmap=你的图象源

UCHAR blue=(bitmap[3*index+0])>>3,
      green=(bitmap[3*index+1])>>2,
      red=(bitmap[3*index+2])>>3;
USHORT color=_RGB16BIT565(red,green,blue)

#5


说明一下RGB格式的24位位图
按888字节存放,前8个字位是red,中间8个是green,后8个是blue
而16位RGB格式一般是
565也就是说
前八位是5位red和3位green,后八位是3位green和5位blue
sizeof(UCHAR)=1也就是8个字位
sizeof(USHORT)=2也就是16个字位
所以24位位图每个象素需要3个UCHAR
而16位位图用1个USHORT或2个UCHAR来存储象素
而一般存储位图都是倒存,从最后一个象素开始往前存
也就是说,如果第一个象素是1011,1100,0011,0101,1111,1111的话
如果你顺序读取位图的话
UCHAR a[]=第一个象素的地址
a[1]=1111,1111
a[2]=0011,0101
a[3]=1011,1100
所以如果你用UCHAR来读24位位图的话
你就是按blue,green,red的顺序来存储
所以你读的时候先读出blue,然后才是green,red
同时注意在数据源中将图片上下颠倒过来

#6


还有一种16位存储格式是1555
这个要调节第一个alpha位
宏定义就该改成
#define _RGB16BIT565(a,r,g,b) ((a&1)+((b & 31)<<1) + ((g & 31) << 6) + ((r & 31) << 11))

读的时候也要做相应改动
不过一般都不用这种存储方式

#7


好久之前的帖子,但是同样值得阅读。。。

推荐阅读
  • BitMap的原理和实现方法
    这篇文章主要介绍“BitMap的原理和实现方法”,在日常操作中,相信很多人在BitMap的原理和实现方法问题上存在疑惑,小编查阅了各式资料,整理出简 ... [详细]
  • 白话计算机图形学初步-由一个小问题引发的故事
    一、为何写本文  今天在学习android时遇到的一个问题:android程序从网络得到一张图片,显示在程序的imageview中,期间调用了bitmap把字节数组转化成位图文件,才能 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • Android Bitmap 缓存策略
    Android中最常用到缓存的地方就是图片,通过过缓存即可以提高应用程序的效率,又可以节省用户的流量。图片的缓存简单来说可以分为SD卡缓存和内存缓存,也可以俩者配合使用。Andr ... [详细]
  • Android大图片裁剪终极解决方案(上:原理分析)
    转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激!:-)http:blog.csdn.netfloodingfirearticledetails ... [详细]
  • 文章目录1.数据结构的定义2.查询方法的实现3.修改方法的实现        在Java中使用byte[]字节数组来储存bit,1byte=8bit。对于bit中的第i位,该bit ... [详细]
  • 要点:假如有10亿元素,全部数据读进内存,占用1000000000*4102410241024≈3.725G,爆炸!解决方法:bitmap算法,每一位都能 ... [详细]
  • 网上有很多解决android加载bitmap内存溢出的方法,搜了一圈做下整理总结。项目里需求是拍摄多图之后上传,部分手机会内存溢出。常用一种解决方法:即将载入的图片缩小,这种方式以牺牲图片的质量为代价 ... [详细]
  • Android中Bitmap与Drawable的区别有哪些?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更 ... [详细]
  • Android 性能优化系列之bitmap图片优化
    在日常开发的APP,大部分时候需要想用户展示图片信息,图片最终对应Android中的Bitmap对象。而对于APP端来说Bitmap又是一个比较麻烦的问题,主要表现在Bitmap是非常占用内存的对象,处理不当将导致APP运行卡顿甚至出现OOM ... [详细]
  • 在Android中进行图像处理的任务时,有时我们希望将处理后的结果以图像文件的格式保存在内部存储空间中,本文以此为目的,介绍将Bitmap对象的数据以P ... [详细]
  • BitmapbitmapBitmapFactory.decodeResource(r,R.drawable.icon).copy(Bitmap.Config.ARGB_8888,tr ... [详细]
author-avatar
手机用户2502916905
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有