java - 我想加载没有额外白色像素的图像。我该怎么做呢?

标签 java image image-processing transparency

当我在 Canvas 上绘制图像时,图像周围的白色像素也位于图像边界内。关于如何防止这种情况有什么建议吗?

最佳答案

enter image description here

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);
    }
}

关于java - 我想加载没有额外白色像素的图像。我该怎么做呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13908426/

相关文章:

iphone - 以编程方式在 iPhone 上使用彩信发送图像?

php - 使用 Android 应用程序使用 URL 在服务器上保存图像 ERROR 输入错误结束在第 1 行第 1 列路径 $

python - 图像处理Opencv Python中的角点检测

python - 从图像中提取奶牛编号

c++ - 执行 cv::warpPerspective 以在一组 cv::Point 上进行假偏斜

Java - 使用 FileOutputStream append 到 Excel 文件

java - @Value 注解 & NullPointerException

java - CheckBox isSelected() 方法总是返回 false

java - 使用 doReturn 为 Spring Service 实现 JUnit 测试

css - Materialize 使 slider 图像响应