Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想加载一个没有额外白色像素的图像。我该怎么做?_Java_Image_Image Processing_Transparency - Fatal编程技术网

Java 我想加载一个没有额外白色像素的图像。我该怎么做?

Java 我想加载一个没有额外白色像素的图像。我该怎么做?,java,image,image-processing,transparency,Java,Image,Image Processing,Transparency,当我在画布上绘制图像时,图像周围的白色像素也位于图像边界处。关于如何防止这种情况的任何提示?使用.png图像。.gif图像只有总透明度/无透明度。使用.png图像。.gif图像只有总透明度/无透明度。将图像插入JPanel。画布是一个重量级组件。或者,尝试更改画布的alpha此.setBackground(新颜色(0,0,0,0); 编辑:尝试此操作。为图像创建一个类。初始化图像的方式无关紧要。 public class MyImage extends JPanel { private

当我在画布上绘制图像时,图像周围的白色像素也位于图像边界处。关于如何防止这种情况的任何提示?

使用.png图像。.gif图像只有总透明度/无透明度。

使用.png图像。.gif图像只有总透明度/无透明度。

将图像插入JPanel。画布是一个重量级组件。或者,尝试更改画布的alpha<代码>此.setBackground(新颜色(0,0,0,0);

编辑:尝试此操作。为图像创建一个类。初始化图像的方式无关紧要。

public class MyImage extends JPanel {

    private final URL IMG_DIRECTORY = Main.class.getResource("/res/yourImage.png"); // Image directory

    public MyImage() {

        try {
            img = ImageIO.read(IMG_DIRECTORY);
        } catch (Exception e) {
            e.printStackTrace();
        }

        this.setSize(img.getWidth(null), img.getHeight(null);

    }

    @Override
    public void paint(Graphics g) {

        g.drawImage(img, 0, 0, null);

    }

在Frame类上,声明图像类
MyImage yourImage=new MyImage();
,然后将其添加到ContentPane中。

将图像插入JPanel。画布是一个重量级组件。或者,尝试更改画布的alpha。
此。挫折背景(新颜色(0,0,0,0);

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.net.URL;

class ImageTransparencyByColor {

    public static BufferedImage getTransparentImage(
        BufferedImage image, Color transparent) {
        // must have a transparent image
        BufferedImage img = new BufferedImage(
            image.getWidth(),image.getHeight(),BufferedImage.TYPE_INT_ARGB);
        Graphics2D g= img.createGraphics();
        for (int x=0; x<img.getWidth(); x++) {
            for (int y=0; y<img.getHeight(); y++) {
                if (image.getRGB(x,y)!=transparent.getRGB()) {
                    img.setRGB( x,y, image.getRGB(x,y) );
                }
            }
        }
        g.dispose();
        return img;
    }

    public static void main(String[] args) throws Exception {
        URL url = new URL ("http://www.gravatar.com/avatar" +
            "/ab5193916ccf152f96b0a69323e934a1?s=128&d=identicon&r=PG");
        final BufferedImage trans = getTransparentImage(
            ImageIO.read(url), Color.WHITE);
        Runnable r = new Runnable() {
            @Override
            public void run() {
                JLabel gui = new JLabel(new ImageIcon(trans));
                JOptionPane.showMessageDialog(null, gui);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}
编辑:尝试此操作。为图像创建一个类。初始化图像的方式无关紧要。

public class MyImage extends JPanel {

    private final URL IMG_DIRECTORY = Main.class.getResource("/res/yourImage.png"); // Image directory

    public MyImage() {

        try {
            img = ImageIO.read(IMG_DIRECTORY);
        } catch (Exception e) {
            e.printStackTrace();
        }

        this.setSize(img.getWidth(null), img.getHeight(null);

    }

    @Override
    public void paint(Graphics g) {

        g.drawImage(img, 0, 0, null);

    }
在Frame类上,声明您的image类
MyImage yourImage=new MyImage();
,然后将其添加到ContentPane中。

import java.awt.*;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.net.URL;

class ImageTransparencyByColor {

    public static BufferedImage getTransparentImage(
        BufferedImage image, Color transparent) {
        // must have a transparent image
        BufferedImage img = new BufferedImage(
            image.getWidth(),image.getHeight(),BufferedImage.TYPE_INT_ARGB);
        Graphics2D g= img.createGraphics();
        for (int x=0; x<img.getWidth(); x++) {
            for (int y=0; y<img.getHeight(); y++) {
                if (image.getRGB(x,y)!=transparent.getRGB()) {
                    img.setRGB( x,y, image.getRGB(x,y) );
                }
            }
        }
        g.dispose();
        return img;
    }

    public static void main(String[] args) throws Exception {
        URL url = new URL ("http://www.gravatar.com/avatar" +
            "/ab5193916ccf152f96b0a69323e934a1?s=128&d=identicon&r=PG");
        final BufferedImage trans = getTransparentImage(
            ImageIO.read(url), Color.WHITE);
        Runnable r = new Runnable() {
            @Override
            public void run() {
                JLabel gui = new JLabel(new ImageIcon(trans));
                JOptionPane.showMessageDialog(null, gui);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}
import java.awt.*;
导入java.awt.image.buffereImage;
导入javax.swing.*;
导入javax.imageio.imageio;
导入java.net.URL;
类ImageTransparencyByColor{
公共静态缓冲区图像获取透明图像(
BuffereImage图像,彩色透明){
//必须有一个透明的图像
BuffereImage img=新的BuffereImage(
image.getWidth()、image.getHeight()、buffereImage.TYPE_INT_ARGB);
Graphics2D g=img.createGraphics();
对于(int x=0;x

import java.awt.*;
导入java.awt.image.buffereImage;
导入javax.swing.*;
导入javax.imageio.imageio;
导入java.net.URL;
类ImageTransparencyByColor{
公共静态缓冲区图像获取透明图像(
BuffereImage图像,彩色透明){
//必须有一个透明的图像
BuffereImage img=新的BuffereImage(
image.getWidth()、image.getHeight()、buffereImage.TYPE_INT_ARGB);
Graphics2D g=img.createGraphics();

对于(int x=0;xy你需要画一个透明的图像:我读了这篇文章,仍然感到困惑x.xi如果一开始图像不是透明的,你可以对它进行过滤,使白色像素变为透明,但内部白色像素也会出现这种情况,因此必须小心。我没有任何内部白色像素,那么如何过滤它?你需要画一个透明的图像:我读了这篇文章,但我仍然对x.XI感到困惑。如果图像一开始不是透明的,你可以过滤它,使白色像素变为透明,但内部白色像素也会出现这种情况,因此必须小心。我没有任何内部白色像素,那么我如何过滤它?如果我的两个答案中有一个没有帮助您,请发布您的SSCE图片im加载正在覆盖一系列不同颜色的背景,因此我需要白色像素以某种方式透明…如果我的2个答案中的任何一个对您没有帮助,请发布您的SSCE图片im加载正在覆盖一系列不同颜色的背景,因此我将希望白色像素以某种方式透明。。。