Java 获取图片rgb值 像素矩阵方法

Java 获取图片rgb值 像素矩阵方法

复制代码
package com.WXAIPhotoAPI;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.Raster;
import java.io.File;
import java.io.IOException;


public class DemoTest2 {

    public static void getData(String path) {
        try {
            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");
    }

}
复制代码

 

posted on   星河赵  阅读(821)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
历史上的今天:
2020-04-27 python str与bytes之间的转换
2018-04-27 python unicode to str and str to unicode

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示