小弟最近在学有关图像处理问题,我想修改图像像素,但总没成功.书里只有关获取像素的API
try{
PixelGrabber pg=new PixelGrabber(im,0,0,w,h,pixels,0,w);
pg.grabPixels();
}catch(InterruptedException e){e.printStackTrace();}
ColorModel cm=ColorModel.getRGBdefault();
for(x=0;x<w*h;x++){
int red=cm.getRed(pixels[x]);
int green=cm.getGreen(pixels[x]);
int blue=cm.getBlue(pixels[x]);
.....
}
我想问的是,这样是获取了RGB的像素
如果我想修改的话应该怎样把修改后的RGB放pixels这个数组里????
try{
PixelGrabber pg=new PixelGrabber(im,0,0,w,h,pixels,0,w);
pg.grabPixels();
}catch(InterruptedException e){e.printStackTrace();}
ColorModel cm=ColorModel.getRGBdefault();
for(x=0;x<w*h;x++){
int red=cm.getRed(pixels[x]);
int green=cm.getGreen(pixels[x]);
int blue=cm.getBlue(pixels[x]);
.....
}
我想问的是,这样是获取了RGB的像素
如果我想修改的话应该怎样把修改后的RGB放pixels这个数组里????
int height = 300;
BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB); 这段代码创建了一个 BufferedImage 对象,它代表一个 200 像素宽、300 像素高的图像。为了应用这个图像,我们需要有图形上下文,而 BufferedImage 对象的 createGraphics() 方法就返回一个与该图像相关的 Graphics2D 对象:int width = 200;
Graphics2D g2D = image.createGraphics(); 使用 g2D 对象的操作会修改 BufferedImage 对象 image 的像素。利用这个对象,您现在完全有能力应用 BufferedImage 对象。您可以绘制形状、图像、GeneralPath 对象或任何别的东西,还可以为图形上下文设置 alpha 组合对象。您同时还拥有 Graphics2D 对象提供的全部仿射变形能力。 如果要从 BufferedImage 对象获取单个像素,可以通过调用它的 getRGB() 方法,并提供该像素的 x,y 坐标作为 int 类型的参数。这个像素会按 TYPE_INT_ARGB 格式以 int 类型返回,它由四个 8 位的值(代表 alpha 值和 RGB 颜色组件)组成一个 32 位字。同时 getRGB() 还有一个重载的版本,它从一部分图像数据中返回一个像素数组。您也可以通过调用 setRGB() 方法来设置单个像素。前两个参数是该像素的坐标值,第三个参数是待设定的值,类型为 int。这个方法也有一个版本可以设置像素数组的值。