java 抠图

时间简易抠图(例如手机拍照去除背景色)

色差范围0-255 自己定义

//色差范围0~255
    
	//public static int color_range = 210;//
	public static int color_range = 100;//

核心代码

public static void main(String[] args) throws Exception{
        BufferedImage image = ImageIO.read(new File("C:/Users/Administrator/Desktop/透明印章/a1.png"));
        // 高度和宽度
        int height = image.getHeight();
        int width = image.getWidth();
 
        // 生产背景透明和内容透明的图片
        ImageIcon imageIcon = new ImageIcon(image);
        BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR);
        Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics(); // 获取画笔
        g2D.drawImage(imageIcon.getImage(), 0, 0, null); // 绘制Image的图片,使用了imageIcon.getImage(),目的就是得到image,直接使用image就可以的
        int i=1;
        int alpha = 0; // 图片透明度
        // 外层遍历是Y轴的像素
        for (int y = bufferedImage.getMinY(); y < bufferedImage.getHeight(); y++) {
            // 内层遍历是X轴的像素
            for (int x = bufferedImage.getMinX(); x < bufferedImage.getWidth(); x++) {
                int rgb = bufferedImage.getRGB(x, y);
                // 对当前颜色判断是否在指定区间内
                if (colorInRange(rgb)){
                    // #AARRGGBB 最前两位为透明度
                    rgb = (alpha << 24) | (rgb & 0x00ffffff);
                    bufferedImage.setRGB(x, y, rgb);
                    alpha = 0;
                   
                }else{
                // 设置为不透明
                    alpha = 255;
                    // #AARRGGBB 最前两位为透明度
                    rgb = (alpha << 24) | (0xff0000);//红色构图
                    //rgb = (alpha << 24) | (0x000000);//黑色构图
                    bufferedImage.setRGB(x, y, rgb);
                }
                
            }
        }
        // 绘制设置了RGB的新图片,这一步感觉不用也可以只是透明地方的深浅有变化而已,就像蒙了两层的感觉
        g2D.drawImage(bufferedImage, 0, 0, null);
 
        // 生成图片为PNG
        ImageIO.write(bufferedImage, "png", new File("C:/Users/Administrator/Desktop/透明印章/result.png"));
        }
 
    // 判断是背景还是内容
    public static boolean colorInRange(int color) {
        int red = (color & 0xff0000) >> 16;// 获取color(RGB)中R位
        int green = (color & 0x00ff00) >> 8;// 获取color(RGB)中G位
        int blue = (color & 0x0000ff);// 获取color(RGB)中B位
        //System.out.println("red=="+red   +"green=="+green  +"blue=="+blue);
        // 通过RGB三分量来判断当前颜色是否在指定的颜色区间内
        if (red >= color_range && green >= color_range && blue >= color_range){
            return true;
        }
      System.out.println("red**"+red   +"green**"+green  +"blue**"+blue);
        return false;
    }

颜色对照表

"black"=>array( 0x000000),黑色 
    		"maroon"=>array( 0x800000), 栗色
    		"green"=>array( 0x008000), 绿色
    		"olive"=>array( 0x808000), 橄榄色
    		"navy"=>array( 0x000080),  藏青色
    		"purple"=>array( 0x800080), 紫色
    		"teal"=>array( 0x008080), 凫蓝:适度或深色的带蓝色的绿色到呈绿色的蓝色
    		"gray"=>array( 0x808080), 灰色
    		"silver"=>array( 0xC0C0C0), 银色
    		"red"=>array( 0xFF0000), 红色
    		"lime"=>array( 0x00FF00), 
    		"yellow"=>array( 0xFFFF00), 黄色
    		"blue"=>array( 0x0000FF), 蓝色
    		"fuchsia"=>array( 0xFF00FF), 紫红
    		"aqua"=>array( 0x00FFFF), 浅绿色
    		"white"=>array( 0xFFFFFF), 白色  Netscape and IE所附加定义的颜色 
    		"aliceblue"=>array( 0xF0F8FF), 
    		"antiquewhite"=>array( 0xFAEBD7), 
    		"aquamarine"=>array( 0x7FFFD4), 
    		"azure"=>array( 0xF0FFFF), 
    		"beige"=>array( 0xF5F5DC), 
    		"blueviolet"=>array( 0x8A2BE2), 
    		"brown"=>array( 0xA52A2A), 
    		"burlywood"=>array( 0xDEB887), 
    		"cadetblue"=>array( 0x5F9EA0), 
    		"chartreuse"=>array( 0x7FFF00), 
    		"chocolate"=>array( 0xD2691E), 
    		"coral"=>array( 0xFF7F50), 
    		"cornflowerblue"=>array( 0x6495ED), 
    		"cornsilk"=>array( 0xFFF8DC), 
    		"crimson"=>array( 0xDC143C), 
    		"darkblue"=>array( 0x00008B), 
    		"darkcyan"=>array( 0x008B8B), 
    		"darkgoldenrod"=>array( 0xB8860B), 
    		"darkgray"=>array( 0xA9A9A9), 
    		"darkgreen"=>array( 0x006400), 
    		"darkkhaki"=>array( 0xBDB76B), 
    		"darkmagenta"=>array( 0x8B008B), 
    		"darkolivegreen"=>array( 0x556B2F), 
    		"darkorange"=>array( 0xFF8C00), 
    		"darkorchid"=>array( 0x9932CC), 
    		"darkred"=>array( 0x8B0000), 
    		"darksalmon"=>array( 0xE9967A), 
    		"darkseagreen"=>array( 0x8FBC8F), 
    		"darkslateblue"=>array( 0x483D8B), 
    		"darkslategray"=>array( 0x2F4F4F), 
    		"darkturquoise"=>array( 0x00CED1), 
    		"darkviolet"=>array( 0x9400D3), 
    		"deeppink"=>array( 0xFF1493), 
    		"deepskyblue"=>array( 0x00BFFF), 
    		"dimgray"=>array( 0x696969), 
    		"dodgerblue"=>array( 0x1E90FF), 
    		"firebrick"=>array( 0xB22222), 
    		"floralwhite"=>array( 0xFxFAF0), 
    		"forestgreen"=>array( 0x228B22), 
    		"gainsboro"=>array( 0xDCDCDC), 
    		"ghostwhite"=>array( 0xF8F8FF), 
    		"gold"=>array( 0xFFD700), 
    		"goldenrod"=>array( 0xDAA520), 
    		"greenyellow"=>array( 0xADFF2F), 
    		"honeydew"=>array( 0xF0FFF0), 
    		"hotpink"=>array( 0xFF69B4), 
    		"indianred"=>array( 0xCD5C5C), 
    		"indigo"=>array( 0x4B0082), 
    		"ivory"=>array( 0xFFFFF0), 
    		"khaki"=>array( 0xF0E68C), 
    		"lavender"=>array( 0xE6E6FA), 
    		"lavenderblush"=>array( 0xFFF0F5), 
    		"lawngreen"=>array( 0x7CFC00), 
    		"lemonchiffon"=>array( 0xFFFACD), 
    		"lightblue"=>array( 0xADD8E6), 
    		"lightcoral"=>array( 0xF08080), 
    		"lightcyan"=>array( 0xE0FFFF), 
    		"lightgoldenrodyellow"=>array( 0xFAFAD2), 
    		"lightgreen"=>array( 0x90EE90), 
    		"lightgrey"=>array( 0xD3D3D3), 
    		"lightpink"=>array( 0xFFB6C1), 
    		"lightsalmon"=>array( 0xFFA07A), 
    		"lightseagreen"=>array( 0x20B2AA), 
    		"lightskyblue"=>array( 0x87CEFA), 
    		"lightslategray"=>array( 0x778899), 
    		"lightsteelblue"=>array( 0xB0C4DE), 
    		"lightyellow"=>array( 0xFFFFE0), 
    		"limegreen"=>array( 0x32CD32), 
    		"linen"=>array( 0xFAF0E6), 
    		"mediumaquamarine"=>array( 0x66CDAA), 
    		"mediumblue"=>array( 0x0000CD), 
    		"mediumorchid"=>array( 0xBA55D3), 
    		"mediumpurple"=>array( 0x9370D0), 
    		"mediumseagreen"=>array( 0x3CB371), 
    		"mediumslateblue"=>array( 0x7B68EE), 
    		"mediumspringgreen"=>array( 0x00FA9A), 
    		"mediumturquoise"=>array( 0x48D1CC), 
    		"mediumvioletred"=>array( 0xC71585), 
    		"midnightblue"=>array( 0x191970), 
    		"mintcream"=>array( 0xF5FFFA), 
    		"mistyrose"=>array( 0xFFE4E1), 
    		"moccasin"=>array( 0xFFE4B5), 
    		"navajowhite"=>array( 0xFFDEAD), 
    		"oldlace"=>array( 0xFDF5E6), 
    		"olivedrab"=>array( 0x6B8E23), 
    		"orange"=>array( 0xFFA500), 
    		"orangered"=>array( 0xFF4500), 
    		"orchid"=>array( 0xDA70D6), 
    		"palegoldenrod"=>array( 0xEEE8AA), 
    		"palegreen"=>array( 0x98FB98), 
    		"paleturquoise"=>array( 0xAFEEEE), 
    		"palevioletred"=>array( 0xDB7093), 
    		"papayawhip"=>array( 0xFFEFD5), 
    		"peachpuff"=>array( 0xFFDAB9), 
    		"peru"=>array( 0xCD853F), 
    		"pink"=>array( 0xFFC0CB), 
    		"plum"=>array( 0xDDA0DD), 
    		"powderblue"=>array( 0xB0E0E6), 
    		"rosybrown"=>array( 0xBC8F8F), 
    		"royalblue"=>array( 0x4169E1), 
    		"saddlebrown"=>array( 0x8B4513), 
    		"salmon"=>array( 0xFA8072), 
    		"sandybrown"=>array( 0xF4A460), 
    		"seagreen"=>array( 0x2E8B57), 
    		"seashell"=>array( 0xFFF5EE), 
    		"sienna"=>array( 0xA0522D), 
    		"skyblue"=>array( 0x87CEEB), 
    		"slateblue"=>array( 0x6A5ACD), 
    		"slategray"=>array( 0x708090), 
    		"snow"=>array( 0xFFFAFA), 
    		"springgreen"=>array( 0x00Fx7F), 
    		"steelblue"=>array( 0x4682B4), 
    		"tan"=>array( 0xD2B48C), 
    		"thistle"=>array( 0xD8BFD8), 
    		"tomato"=>array( 0xFF6347), 
    		"turquoise"=>array( 0x40E0D0), 
    		"violet"=>array( 0xEE82EE), 
    		"wheat"=>array( 0xF5DEB3), 
    		"whitesmoke"=>array( 0xF5F5F5), 
    		"yellowgreen"=>array( 0x9ACD32));
示例图片1

java游戏抠图 java自动抠图_抠图

示例图片2

java游戏抠图 java自动抠图_Image_02

希望此文章可以帮助到您。1


  1. 在浩瀚的代码海洋中,我们一起航行!
    架构师资料学习
    https://pan.baidu.com/s/1hhX-fjQvpnfO_GSeYVtbYw 提取码 9kts ↩︎