所以我尝试寻找解决方案,但找不到可以将 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
时,我们可以更改图像的类型:
RGB 对我来说适用于 PNG。
我是一名优秀的程序员,十分优秀!