查看: 2648|回复: 5

image像素操作问题!

[复制链接]

该用户从未签到

发表于 2010-4-19 11:37:41 | 显示全部楼层 |阅读模式
osg::Image* image = new osg::Image() ;
     image = osgDB::readImageFile(filename.c_str());
//读取图像宽和高
unsigned int width_image = image->s();
unsigned int height_image = image->t();
//为new_image分配一个空间
osg::Image* new_image = new osg::Image();
new_image->allocateImage(width_image, height_image, 1, GL_RGBA, GL_FLOAT);
//设置new_image纹理图像数据格式RGBA
new_image->setInternalTextureFormat(GL_RGBA);
//为new_image填充数据
osg::Vec4* dataPtr = (osg::Vec4*)new_image->data();
for( unsigned int i =0; i<width_image; i++)
{
  for(unsigned int j=0; j<height_image; j++)
  {
   osg::Vec4  color_temp = image->getColor( i,j );
   //printf("颜色%f%f%f\n",color_temp[0],color_temp[1],color_temp[2]);
   
   *dataPtr++ = color_temp;
  }
}

为了操作像素,我先测试:我读取一个图片,然后按像素读取,转存。数据对的,但是顺序是乱的,图像显示是乱的。

该用户从未签到

 楼主| 发表于 2010-4-19 11:43:19 | 显示全部楼层
printf("数据Vec4:%f,%f,%f,%f\n",dataPtr->r(),dataPtr->g(),dataPtr->b(),dataPtr->a());
我打印出来的数据好乱啊,根本不在0到1之间

该用户从未签到

发表于 2010-4-19 12:43:00 | 显示全部楼层
对调for( i ... )和for( j ... )两行的顺序

该用户从未签到

 楼主| 发表于 2010-4-19 14:44:06 | 显示全部楼层
果然。。。。。。

该用户从未签到

 楼主| 发表于 2010-4-19 14:52:41 | 显示全部楼层
谢谢啊!
结贴!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表