如何将缓冲图像转换为图像,反之亦然?
2022-09-01 19:54:47
实际上,我正在开发图像编辑软件,现在我想转换缓冲图像,即:
BufferedImage buffer = ImageIO.read(new File(file));
到图像,即格式如下:
Image image = ImageIO.read(new File(file));
有可能吗??如果是,那么如何??
实际上,我正在开发图像编辑软件,现在我想转换缓冲图像,即:
BufferedImage buffer = ImageIO.read(new File(file));
到图像,即格式如下:
Image image = ImageIO.read(new File(file));
有可能吗??如果是,那么如何??
BufferedImage是一个(n)Image,因此您在第二行中执行的隐式转换可以直接编译。如果您知道图像实际上是缓冲图像,则必须像这样明确地投射它:
Image image = ImageIO.read(new File(file));
BufferedImage buffered = (BufferedImage) image;
由于 BufferedImage 扩展了 Image,因此它可以放入 Image 容器中。但是,任何图像都可以容纳在那里,包括那些不是BufferedImage的图像,因此,如果类型不匹配,您可能会在运行时获得ClassCastException,因为BufferedImage不能容纳任何其他类型,除非它扩展BufferedImage。
示例:假设您有一个要缩放的“图像”,则可能需要缓冲图像,并且可能仅从“图像”对象开始。所以我认为这有效...AVATAR_SIZE是我们希望图像成为的目标宽度:
Image imgData = image.getScaledInstance(Constants.AVATAR_SIZE, -1, Image.SCALE_SMOOTH);
BufferedImage bufferedImage = new BufferedImage(imgData.getWidth(null), imgData.getHeight(null), BufferedImage.TYPE_INT_RGB);
bufferedImage.getGraphics().drawImage(imgData, 0, 0, null);