首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将BufferedImage RGBA转换为BufferedImage RGB?

如何将BufferedImage RGBA转换为BufferedImage RGB?
EN

Stack Overflow用户
提问于 2017-05-25 13:56:19
回答 2查看 2.3K关注 0票数 2

因此,我尝试寻找解决方案,但找不到可以将RGBA格式转换为RGB格式的解决方案。

如果给出了从BufferedImage到BufferedImage转换的简单解决方案,那么这将是最好的,否则问题如下:

基本上,我必须将BufferedImage转换成MAT格式。它适用于JPG/JPEG图像,但不适用于PNG。用于转换的代码如下:

代码语言:javascript
复制
BufferedImage biImg = ImageIO.read(new File(imgSource));
            mat = new Mat(biImg.getHeight(), biImg.getWidth(),CvType.CV_8UC3); 
            Imgproc.cvtColor(mat,matBGR, Imgproc.COLOR_RGBA2BGR);
            byte[] data = ((DataBufferByte) biImg.getRaster().getDataBuffer()).getData();
            matBGR.put(0, 0, data);

对于具有RGBA值的图像,这会引发错误。因此,寻找一个解决方案。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-25 15:17:27

我找到了这样的解决方案:

代码语言:javascript
复制
BufferedImage oldRGBA= null;
    try {
        oldRGBA= ImageIO.read(new URL("http://yusufcakmak.com/wp-content/uploads/2015/01/java_ee.png"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    final int width = 1200;
    final int height = 800;
    BufferedImage newRGB = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
    newRGB .createGraphics().drawImage(oldRGBA, 0, 0, width, height, null);
    try {
        ImageIO.write(newRGB , "PNG", new File("your path"));

    } catch (IOException e) {}

因此,在这里,当我们创建新的BufferedImage时,我们可以用以下方法更改图像的类型:

RGB和PNG一起为我工作。

票数 3
EN

Stack Overflow用户

发布于 2017-05-25 18:58:46

代码语言:javascript
复制
public static BufferedImage toBufferedImageOfType(BufferedImage original, int type) {
        if (original == null) {
            throw new IllegalArgumentException("original == null");
        }
        if (original.getType() == type) {
            return original;
        }
        BufferedImage image = new BufferedImage(original.getWidth(), original.getHeight(), type);
        Graphics2D g = image.createGraphics();
        try {
            g.setComposite(AlphaComposite.Src);
            g.drawImage(original, 0, 0, null);
        }
        finally {
            g.dispose();
        }
        return image;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44182400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档