java - 如何使用文件作为参数创建 BufferedImage 的新类

标签 java constructor bufferedimage

我想创建一个新类,因为我想创建一些新方法,它扩展 BufferedImage 并接受一个文件、一张 bmp 图片作为参数。 就像这里发生的事情一样:

BufferedImage image = ImageIO.read(new File(dir + "coffeecup.png"));

查看文档我发现 BufferedImage 类有两个构造函数:

  1. 公共(public) BufferedImage(ColorModel cm,WritableRaster 光栅, boolean isRasterPremultiplied, 哈希表属性)
  2. 公共(public) BufferedImage(int 宽度, 整数高度, int imageType)

浏览所有参数的文档时,我没有注意到哪个参数引用了文件(如果有)。 那么我需要如何创建一个新的 BufferedImage 类,但将文件作为参数之一?

最佳答案

不要尝试复杂的事情。除非您试图覆盖某些实现(我建议不要这样做),否则请遵循继承的基本规则组合。只需创建一个包装类,而不是尝试不必要地扩展 BufferedImage。你试图将担忧结合起来,这是一个可怕的想法。 BufferedImage 不能用文件构造,因为这不是 Image 的问题。正如关于 BufferedImage 所说的

It manages the image in memory and provides methods for storing, interpreting, and obtaining pixel data.

这就是它应该关心的一切。因此,创建一个包装类,您可以添加方法来执行任何操作

public class BufferedImageWrapper {
    private BufferedImage bufferredImage;

    public BufferedImageWrapper(File file) {
        try {
            bufferedImage = ImageIO.read(file);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    // your methods here
}

关于java - 如何使用文件作为参数创建 BufferedImage 的新类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24529600/

相关文章:

java - Android Studio : Working with parameters

Java:如何使用构造函数创建数组对象?

c++ - 初始化列表、可变参数模板和构造函数推导 : a strange case

java - 如何将动态创建的 BufferedImage 实例的背景设置为透明?

Java:从缓冲图像中获取 RGBA 作为整数数组

java - 根据屏幕分辨率自动调整JInternalFrame的大小

java - 从android执行shell命令

javascript - 正则表达式构造函数和文字之间的反斜杠差异

java - 如何在 Java 中合并图像而不将它们加载到 RAM 中

java - 在 macOS High Sierra 上使用 javapackager 找不到 icns 文件错误