int
[] rgb =
new
int
[3
];
BufferedImage bimg
= ImageIO.read(
new
File(path));
int
[][] data =
new
int
[bimg.getWidth()][bimg.getHeight()];
//
方式一:通过getRGB()方式获得像素矩阵
//
此方式为沿Height方向扫描
for
(
int
i = 0; i < bimg.getWidth(); i++
) {
for
(
int
j = 0; j < bimg.getHeight(); j++
) {
int
pixel =
bimg.getRGB(i, j);
//
输出一列数据比对
if
(i == 0
) {
rgb[
0] = (pixel & 0xff0000) >> 16
;
rgb[
1] = (pixel & 0xff00) >> 8
;
rgb[
2] = (pixel & 0xff
);
System.out.println(
"i=" + i + ",j=" + j + ":(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + ")"
);
int
gray = (
int
) (rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11);
//
计算灰度值
System.out.println(gray);
//
Raster raster = bimg.getData();
//
int[] temp = new int[raster.getWidth() * raster.getHeight() * raster.getNumBands()];
//
//
方式二:通过getPixels()方式获得像素矩阵
//
//
此方式为沿Width方向扫描
//
int[] pixels = raster.getPixels(0, 0, raster.getWidth(), raster.getHeight(), temp);
//
for (int i = 0; i < pixels.length; ) {
//
//
输出一列数据比对
//
if ((i % raster.getWidth() * raster.getNumBands()) == 0)
//
System.out.printf("ff%x%x%x\t", pixels[i], pixels[i + 1], pixels[i + 2]);
//
i += 3;
}
catch
(IOException e) {
e.printStackTrace();
public
static
void
main(String[] args) {
getData(
"/tmp/1.jpg"
);