巨型图像上的java颜色校正

时间:2014-02-16 21:44:18

标签: java image-processing

我必须处理非常大的(1-2GB)Tiff文件,并且只需要对像素执行一些RGB操作,其中我只进行局部校正(修改像素的颜色仅取决于其旧值,但不是在例如邻居像素上)。 他们的(JAVA)是一种将文件读取为某种像素流的方法,对RGB值进行调整,并将这些内容立即写入另一个文件?我没有足够的内存将整个文件存储在RAM中(或者至少我希望我能避免它)

任何提示都是......

THX

-Marco

1 个答案:

答案 0 :(得分:0)

嗯,我实际上不知道什么是tiff文件?,但是如果它是一个文件,可以将其存储在BufferedImage中,则它应该相对容易一些。 我会做类似的事情:

protected $primaryKey = 'id';

您现在基本上可以使用argb值来做所有您想做的事情。 例如,您可以通过执行public BufferedImage correctRGB() { BufferedImage b = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); //width and height are the width and height of the original image Graphics g = b.getGraphics(); for(int x = 0; x < b.getHeight(); x++) { for(int y = 0; y < b.getWidth(); y++) { //loop through all the pixels in the image ONCE to spare RAM int pixels = b.getRGB(x, y); int alpha = (pixels >> 24) &0xff; int red = (pixels >> 16) &0xff; int green = (pixels >> 8) &0xff; int blue = pixels &0xff; //in here you play around with the values g.setColor(new Color(red, green, blue, alpha)); g.fillRect(x, y, 1, 1); } } g.dispose(); return b; } 等操作将整个图像变为负片。 或通过将整个图像变成灰度

red = 255 - red