• 5185阅读
  • 4回复

16bit ->32 bit 图像转化问题 [复制链接]

上一主题 下一主题
离线dmg_123
 

只看楼主 倒序阅读 楼主  发表于: 2007-04-11
— 本帖被 XChinux 执行加亮操作(2008-07-26) —
各位帮忙给我看下下面的代码是16bit 图像转化成32bit 图像(16bit->32 bit )。
我感觉有点问题……
请大家帮看看,错在哪里?

说明:
         out_frame_buffer 里存放的是16bit 图像数据
         frame_buffer_size  为16bit 图像数据大小 (176X96X2)
         图像的尺寸为:196X96
         pTgtBuff     里是预装经转过后的32bit 缓冲区


unsigned char * pTgtBuff;
pTgtBuff = new unsigned char[frame_buffer_size*2];

memcpy((unsigned char *)pTgtBuff,(unsigned char *) out_frame_buffer, 176*96*2);
   
  for(int i=0; i<176; i++)
  {
    short*  pSubSrc=(short*) out_frame_buffer;
    int *pSubTgt=(int *)pTgtBuff;
    for(int k=0 ;k < 96; k++ )
    {
      char* pTgtPixel=(char*)pSubTgt;
   
     pTgtPixel[0]= (((0x00001F)&(*pSubSrc ))<<3);
     pTgtPixel[1]= (((0x0000FC)&(*pSubSrc))>>3);
     pTgtPixel[2]= (((0x0000F8)&(*pSubSrc))>>8);  
     pTgtPixel[3]=0xFF;
      
     pSubSrc++;
     pSubTgt++;
   
    }
    out_frame_buffer = (unsigned char *)out_frame_buffer + 176*2;
    pTgtBuff = (unsigned char *)pTgtBuff + 176*4;

  }
谢谢各位……
[ 此贴被XChinux在2008-07-26 08:38重新编辑 ]
离线zeki709

只看该作者 1楼 发表于: 2007-04-12
Qt中32-bit表示是0xAARRGGBB,你的16-bit图像是怎么表示的?感觉你的转换有点问题
离线dmg_123

只看该作者 2楼 发表于: 2007-04-12
转成32bit的图像不是R(8)G(8)B(8)+8个空字符嘛? 然后进行移位操作嘛?

我16Bit图像是R(5)G(6)B(5)格式的.
如果不是这样,请问我那该 怎么办呢?
离线attica

只看该作者 3楼 发表于: 2007-04-13
可能原因是16bit图像的字节大小序颠倒了
离线dmg_123

只看该作者 4楼 发表于: 2007-04-16
OK,我已经解决了^_^ ,谢谢各位~!
快速回复
限100 字节
 
上一个 下一个