短;
我需要从提供的高色深图像中获取特定像素的值。
详细说明:
我目前正在使用Processing来制作Slit扫描程序。
基本上,我使用灰度图像从动画中选取帧,并使用这些帧中的像素来制作新图像。
例如,如果灰度图像具有黑色像素,则它在第一帧中采用相同的像素,并将其添加到图像中。
如果它是一个白色像素,它与最后一帧相同。
当然,任何介于两者之间的东西都会在中间选择框架。
要点是,如果提供水平渐变和日落的视频,那么左边的日落开始,慢慢过渡到右边的结尾。
我的问题是,当使用Processing时,我似乎只能获得灰度值
0-255使用默认库。
黑色= 0
白= 255
这限制了我只使用256帧进行源动画,或者使用像素,不平滑的结束图像。
我真的需要能够提供更大范围内的像素值,从而获得像素值。
说,
黑色= 0
白= 65025
有没有可以执行此操作的Java库?我可以提供一个HDR Tiff或TGA图像文件,并能够从中读取全部颜色吗?
谢谢,
答案 0 :(得分:0)
好的,为此找到了一个很棒的图书馆; https://code.google.com/p/pngj/
支持完整的PNG功能集 - 包括16位灰度或全彩色图像。 允许我从图像中检索行,然后从这些行中检索像素。
PngReader pngr = new PngReader(new File(filename));
tmrows = pngr.readRows();
ImageLineInt neededline = (ImageLineInt)tmrows.getImageLine(y);
if (neededline.imgInfo.greyscale==true){
//get the right pixel for greyscale
value = neededline.getScanline()[x];
} else {
//get the right pixel for RGB
value = neededline.getScanline()[x*3];
}
您只需乘以3,因为扫描线由RGBRGBRGB(等)组成,用于没有alpha的全彩色图像。