CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

如何提取各个像素的图象数据值[50分],回帖有帮助立即给分

楼主jiangguilong2000(流子)2006-05-01 16:20:22 在 Java / J2SE / 基础类 提问

我想把一张地图(,用photoshop画出来的,jpg格式,里面就两种颜色,障碍物为蓝色,没有障碍物地区为白色,700*700pixel),如何把每个像素的图象数据提取出来,保存在myImage[700][700]二维数组中,这样的话我估计里面就只有两种数值,因为只有两种颜色么.最后再把这副图片通过保存的数组画出来.  
  为什么我用  
  img_full_grabber   =   new   PixelGrabber(img_full,   0,   0,   img_width,img_height,   img_full_data,   0,   img_width);//   准备获取图像数据  
  try   {  
  img_full_grabber.grabPixels();  
  }//   采集数据  
   
  catch   (InterruptedException   e)   {  
  }  
  1\我把img_full_data[]数组打印出来,竟然是这种数据[[I@10b9d04,这是什么啊?为什么不是0~255的值呢?  
  如何能取得0~255的值呢?  
  2\后来我加了这些代码:  
  ColorModel   colorModel   =   ColorModel.getRGBdefault();  
  red[i][j]=colorModel.getRed(img_full_data[i*window_width+j]);  
  打印出来看看,也是类似[[I@10b9d04这样的值.  
  3\还有为什么不把img_full_data保存成二维数组啊?  
   
  问题点数:50、回复次数:4Top

1 楼jiangguilong2000(流子)回复于 2006-05-01 16:24:34 得分 0

写点代码,或给点提示都会给分!Top

2 楼flyforlove(吾将远去)回复于 2006-05-01 16:37:27 得分 5

BufferedImage   img   =   ImageIO.read(file);  
  pixel[x][y]   =   img.getRGB(x,y);Top

3 楼UnAgain()回复于 2006-05-01 20:48:58 得分 25

这里面的东西比较复杂。  
  首先,执行grabPixels()之后,myImage中每个元素里的不是颜色,是像素。所以,简单的打印不会得到颜色值。  
  再说像素,像素的组成方式有很多种,从PixelGrabber的Specification看,它使用ARGB的方式组成像素。在这里,每个像素是Integer,用其中的每8位保存一种分量,从高到低依次为:  
  alpha(主成分,用于透明)  
  red  
  green  
  blue  
   
  其中,得到Red,Green,和Blue分量之后,使用Color.RGB(red,   green,   blue);应该可以得到颜色。  
   
  下面是API   Specification中给出的例子。  
   
    public   void   handlesinglepixel(int   x,   int   y,   int   pixel)   {  
                  int   alpha   =   (pixel   >>   24)   &   0xff;   //   得到位数:24   ~   31  
                  int   red       =   (pixel   >>   16)   &   0xff;   //   得到位数:16   ~   23  
                  int   green   =   (pixel   >>     8)   &   0xff;   //   得到位数:   8   ~   15  
                  int   blue     =   (pixel             )   &   0xff;   //   得到位数:   0   ~     7  
                  //   Deal   with   the   pixel   as   necessary...  
    }  
   
    public   void   handlepixels(Image   img,   int   x,   int   y,   int   w,   int   h)   {  
                  int[]   pixels   =   new   int[w   *   h];  
                  PixelGrabber   pg   =   new   PixelGrabber(img,   x,   y,   w,   h,   pixels,   0,   w);  
                  try   {  
                          pg.grabPixels();  
                  }   catch   (InterruptedException   e)   {  
                          System.err.println("interrupted   waiting   for   pixels!");  
                          return;  
                  }  
                  if   ((pg.getStatus()   &   ImageObserver.ABORT)   !=   0)   {  
                          System.err.println("image   fetch   aborted   or   errored");  
                          return;  
                  }  
                  for   (int   j   =   0;   j   <   h;   j++)   {  
                          for   (int   i   =   0;   i   <   w;   i++)   {  
                                  handlesinglepixel(x+i,   y+j,   pixels[j   *   w   +   i]);  
                          }  
                  }  
    }  
   
   
  Top

4 楼UnAgain()回复于 2006-05-05 07:55:57 得分 20

这几天翻译了几篇文章,可能对你的问题有帮助。  
   
  Programmer's   Guide   to   the   JavaTM   2D   API   --   Chapter   5   Imaging     <http://blog.csdn.net/unagain/archive/2006/05/04/707566.aspx>  
  Programmer's   Guide   to   the   JavaTM   2D   API   --   Chapter   6   Color   <http://blog.csdn.net/unagain/archive/2006/05/05/708656.aspx>  
   
  LookupTable   (Java   2   Platform   SE   5.0)   <http://blog.csdn.net/unagain/archive/2006/05/04/707561.aspx>  
  ComponentSampleModel   (Java   2   Platform   SE   5.0)   <http://blog.csdn.net/unagain/archive/2006/05/04/707558.aspx>  
  BandCombineOp   (Java   2   Platform   SE   5.0)   <http://blog.csdn.net/unagain/archive/2006/05/04/707557.aspx>  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:jiangguilong2000
  • flyforlove
  • UnAgain
  • UnAgain

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo