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

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

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

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值的图像引发错误。所以因此寻找解决方案。

提前致谢。

最佳答案

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

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时,可以使用以下方式更改图像的类型:

java - 如何将BufferedImage RGBA转换为BufferedImage RGB?-LMLPHP

RGB与PNG一起为我工作。

关于java - 如何将BufferedImage RGBA转换为BufferedImage RGB?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44182400/

10-12 02:55