问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中载入图片的白色背景如何去掉?

发布网友 发布时间:2022-05-02 13:01

我来回答

5个回答

热心网友 时间:2022-06-20 04:23

你不理解图片是怎么表示的,普通的位图都是矩形区域,读到程序里就是一个每个像素点值的二维数组,像素的表示有多种情况,常见的是三基色红、绿、蓝 24 位整型数值表示,像 jpeg、bmp 等都是,是不带透明的。所谓透明那是因为有除了三原色值外的其他信息,例如 alpha 值,这样每个像素就占 32 位,它只是看起来是透明的而已,实际上还是一个矩形。

原来的图片要是不带透明的那你得把每个像素进行转换才能让它透明。swing 里处理图片比较麻烦,感觉还不如 swt 来的方便,你还不如预先把图片用软件处理成 png 的再用。

-------------------------------------------------------------
用图片处理软件(如 ps)把背景 p 掉。当然你也可以网上找个好用一点的软件把背景 p 掉。总之预先把背景 p 掉。

热心网友 时间:2022-06-20 04:23

package com.picture;  
  
import java.awt.Graphics2D;  
import java.awt.image.BufferedImage;  
import java.io.File;  
import java.io.IOException;  
import java.util.regex.Pattern;  
  
import javax.imageio.ImageIO;  
import javax.swing.ImageIcon;  
import javax.swing.JOptionPane;  
  
public class Picture {  
  
    public static void convert(String path) {  
        // TODO Auto-generated constructor stub  
        try {  
            BufferedImage image = ImageIO.read(new File(path));  
            ImageIcon imageIcon = new ImageIcon(image);  
            BufferedImage bufferedImage = new BufferedImage(  
                    imageIcon.getIconWidth(), imageIcon.getIconHeight(),  
                    BufferedImage.TYPE_4BYTE_ABGR);  
            Graphics2D g2D = (Graphics2D) bufferedImage.getGraphics();  
            g2D.drawImage(imageIcon.getImage(), 0, 0,  
                    imageIcon.getImageObserver());  
            int alpha = 0;  
            for (int j1 = bufferedImage.getMinY(); j1 < bufferedImage  
                    .getHeight(); j1++) {  
                for (int j2 = bufferedImage.getMinX(); j2 < bufferedImage  
                        .getWidth(); j2++) {  
                    int rgb = bufferedImage.getRGB(j2, j1);  
                    if (colorInRange(rgb))  
                        alpha = 0;  
                    else  
                        alpha = 255;  
                    rgb = (alpha << 24) | (rgb & 0x00ffffff);  
                    bufferedImage.setRGB(j2, j1, rgb);  
                }  
            }  
            g2D.drawImage(bufferedImage, 0, 0, imageIcon.getImageObserver());  
            // 生成图片为PNG  
            String outFile = path.substring(0, path.lastIndexOf("."));  
            ImageIO.write(bufferedImage, "png", new File(outFile + ".png"));  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
    }  
  
    public static boolean colorInRange(int color) {  
        int red = (color & 0xff0000) >> 16;  
        int green = (color & 0x00ff00) >> 8;  
        int blue = (color & 0x0000ff);  
        if (red >= color_range && green >= color_range && blue >= color_range)  
            return true;  
        return false;  
    }  
  
    public static int color_range = 210;  
    public static Pattern pattern = Pattern.compile("[0-9]*");  
  
    public static boolean isNo(String str) {  
        return pattern.matcher(str).matches();  
    }  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        String path = JOptionPane.showInputDialog(null, "请输入图片目录");  
        if (path == null || !new File(path).isDirectory()) {  
            JOptionPane.showMessageDialog(null, "输入目录有误!");  
            return;  
        }  
        String color = JOptionPane.showInputDialog(null, "请输入色差范围0~255(建议10~50)");  
        if (isNo(color)) {  
            color_range = 255 - Integer.parseInt(color);  
            File file = new File(path);  
            String[] files = file.list();  
            for (int i = 0; i < files.length; i++) {  
                String ext = files[i].substring(files[i].lastIndexOf(".") + 1);  
                if (ext.equals("jpg")) {  
                    convert(path + "//" + files[i]);  
                }  
            }  
            JOptionPane.showMessageDialog(null, "转换完成!");  
        } else {  
            JOptionPane.showMessageDialog(null, "输入的数字有误!");  
        }  
    }  
  
}

以上内容可以强制删除白色背景。

热心网友 时间:2022-06-20 04:24

如果目的是在前台显示透明图片的话,建议用Png格式的图片,可以做成透明图片;

java中有BufferedImage类,用BufferedImage读取图片,有getRGB(x,y)方法,获取坐标的像素值,逐个扫描所有点(根据 getWidth()和getHeight())判断是否为白色,setRGB(x, y, c & 0x00ffffff)设置改点为透明。只不过效率可能很低。

热心网友 时间:2022-06-20 04:24

你先确定 你的图是否有白底!!!! 不规则图形不是说程序怎样?
你的图只要是透明背景的话 那载入进来绝对是可以正常显示的 不会说什么始终是个矩形! 你目前看到的矩形 可能是因为图有个白色的底!

用ps啊将你的图的背景设置为透明的!!!

热心网友 时间:2022-06-20 04:25

图片的白色背景一般是需要处理图片的,相关步骤为:

将图片处理为png图片

将png图片设置为控件的背景图片

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请帮忙查iphone4手机的序列号dx3hnchpdp0n DX3J481PDP0N帮忙查一下 是真的吗 我不会查 大神们是翻新的? 苹果4激活日期查询 猫猫一直发情怎么办呢 如何帮助猫咪度过发情期呢? 本科英语都要过4级吗 车子中间的踏板是什么 高考400分能考哪些军事类二本 联通3g双卡双待智能导航手机 ...可以一个卡装移动2g的卡,专打电话,一个卡装联通3g流量卡吗 如何帮助课堂上三闲的学生进入学习状态 怎么去除图片中的白色背景? 怎么把这张图片的白色背景去掉,变成透明背景? 小学数学教学中,如何能设计有效的数学活动,促进课堂教学的前行 什么新技术可以促进课堂互动 图片如何去除白色背景 有人用过红色小象的儿童花露水吗?好用吗? 红色小象牛油果泡泡洗发沐浴露不好用 如何利用作业布置来巩固和促进课堂教学效果 红色小象家的产 品怎么样?求介绍 群里的相册怎么到空间 为什么这么多人喜欢用红色小象? 浅谈活跃课堂气氛的几种途径 冬天宝宝脸干,请问用红色小象的产 品 咋样? QQ里照片上传到群会不会传到空间和自己的相册!! 就是在群里,我们互相发照片,我发的照片他们会一直看到嘛?是不是自动保存到群相册里了 是不是在群里发的照片都会到群相册里去 关于消防安全的资料,内容简单一点,做手抄报用的。 消防安全手抄报的资料,关于防火的知识,长一些。急! 一年一次合家欢。 猜猜什么生肖 我的一个图片背景是白色的,我想把这个白色背景去掉,怎么才能去掉呢? 如何运用信息技术提升初中英语课堂教学的有效性? 如何将信息技术手段与传统教学有机融合,促进课堂目标的高效落实 (2007?湘潭)某中学为促进课堂教学,提高教学质量,对本校七年级学生进行了一次“你最喜欢的课堂教学方 我姐姐梦见我生了个儿子,跟我对象长得一样 我怀孕了,我妹妹梦见我生了一个儿子和我姐姐的儿子张的一模一样,前段时间我也梦见我自己生了个儿子。。 做梦自己生儿子 昨晚上梦见我和姐姐在同一天生了都生了个儿子 梦见自己生了个儿子什么意思? 净水机滤芯安装顺序 韭菜花酱的做法大全 安吉尔净水器外面三个滤芯的安装顺序 农行活期存折余额网上怎么查询 开通支付宝花呗收钱码需要营业执照和门头照,谁有,让我用用,有重谢 申请花呗收款,营业执照上传错了怎么办 在微博上有视频要打赏九块九,不打赏打不开微博,为什么? 只狼y键是键盘哪个键 只狼空中踢键盘怎么用 只狼仙狼怎么用 用卤水怎么卤肉