2017-02-08 27 views
-1

我试图建立这些合成图像程序之一,你喂它X图像,它会使另一张照片出这些图像。现在,我已经从比较公式中获得了一切,从源文件夹中获取文件以进行比较,但我似乎无法弄清楚如何用我已有的图像替换单一像素。如果这可以用bufferedImage /文件完成,怎么样?如果不是,我还有另一种方法可以实现它吗?有没有办法用文件/缓冲读取器替换图像的像素?

+2

读取文件将是一个问题,因为许多文件格式被压缩,并不总是以线性方式存储图像数据。你可以使用'ImageIO'加载图像,它会给你一个'BufferedImage',或者可能有其他库可用,它们不需要加载整个图像以便操作它。 – MadProgrammer

+0

我建议使用'ImageIO'和'BufferedImage's,但请阅读[使用图像](https://docs.oracle.com/javase/tutorial/2d/images/index.html)和[合成](https://docs.oracle.com .com/javase/tutorial/2d/advanced/compositing.html)在开始之前在Java2D教程中。 PS:一些(未压缩)格式可以支持[通过ImageWriter API取代像素](https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageWriter.html#canReplacePixels(int) ),但我不认为你会需要这个只是.. – haraldK

回答

-1
//create simple image 
BufferedImage img = new BufferedImage(320, 240, BufferedImage.TYPE_INT_RGB); 
//set pixel color RED at x=10, y=10 
img.setRGB(10, 10, Color.red.getRGB()); 

//get pixel color as RGB 
int rgb = img.getRGB(50, 50); 

//get components of RGB as separated R, G and B values 
int red = (rgb >> 16) & 0xFF; 
int green = (rgb >> 8) & 0xFF; 
int blue = rgb & 0xFF; 
+0

对不起,澄清,我有一个空的Bufferedimage对象,我想用其他BufferedImages填充它。有没有办法将BufferedImage中的像素设置为另一个BufferedImage对象或类似的东西? –

相关问题