计算图片中不同颜色所占的比例


package com.examp.iugjg;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

import javax.imageio.ImageIO;

public class MyClass {

    public static void main (String [] arg){
        int[] rgb = new int[3];
        //白色
        List<Integer>  write=new ArrayList<Integer>();
        //灰色
        List<Integer>  gray=new ArrayList<Integer>();
        //深灰色
        List<Integer>  darkGray=new ArrayList<Integer>();

        System.out.println("开始读取图片");

        File file =new File("c:\\myPic.jpg");

        BufferedImage bi=null;
        if(null!=file){

            try {
                bi= ImageIO.read(file);
            } catch (IOException e) {
                e.printStackTrace();
            }

            int width=bi.getWidth();
            int height=bi.getHeight();
            int minx=bi.getMinX();
            int miny=bi.getMinY();

            System.out.println("图片的宽度为:"+width+" 图片的高度为:"+height);

            for(int i=minx;i<width;i++){
                for(int j=miny;j<height;j++){
                    int pixel=bi.getRGB(i,j);
                    rgb[0] = (pixel & 0xff0000) >> 16;
                    rgb[1] = (pixel & 0xff00) >> 8;
                    rgb[2] = (pixel & 0xff);

                    if(rgb[0]==255){
                        write.add(pixel);
                    }else if(rgb[0]>=160&&rgb[0]<255){
                        gray.add(pixel);
                    }else{
                        darkGray.add(pixel);
                    }

                    if(i==111&&j==55){
                        System.out.println(rgb[0]);
                    }
                }
            }

            int total=write.size()+gray.size()+darkGray.size();
            System.out.println("这张图总共有"+total+"个像素点");

            DecimalFormat df=new DecimalFormat("0.00");
            float pxWrite=(float)write.size()/total;
            System.out.println("白色占比"+df.format(pxWrite));

            float pxGray=(float)gray.size()/total;
            System.out.println("灰色占比"+df.format(pxGray));

            float pxDarkGray=(float)darkGray.size()/total;
            System.out.println("深灰色占比"+df.format(pxDarkGray));

            float pxDG=(float)gray.size()/darkGray.size();
            System.out.println("灰色与深灰色比值"+df.format(pxDG));


        }else{
            System.out.println("未读取到图片");
        }

    }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM