Java 如何使用文件作为参数创建新的BuffereImage类
我想创建一个新类,因为我想创建一些新方法,扩展BuffereImage并将一个文件(bmp图片)作为参数。 就像这里发生的那样:Java 如何使用文件作为参数创建新的BuffereImage类,java,constructor,bufferedimage,Java,Constructor,Bufferedimage,我想创建一个新类,因为我想创建一些新方法,扩展BuffereImage并将一个文件(bmp图片)作为参数。 就像这里发生的那样: BufferedImage image = ImageIO.read(new File(dir + "coffeecup.png")); 通过查看文档,我发现BuffereImage类有两个构造函数: 公共缓冲区图像(ColorModel cm、可写光栅、, 布尔预乘, 哈希表属性) 公共缓冲区图像(整数宽度, 整数高度, int图像类型) 查看所有参数的文档时,我
BufferedImage image = ImageIO.read(new File(dir + "coffeecup.png"));
通过查看文档,我发现BuffereImage类有两个构造函数:
那么,我需要如何创建一个新的BuffereImage类,但将文件作为参数之一?不要尝试复杂的问题。除非您试图覆盖某些实现(我建议您不要这样做),否则请遵循基本规则组合而不是继承。只需创建一个包装类,而不是尝试不必要地扩展BuffereImage。你正试图将各种顾虑结合起来,这是一个可怕的想法。无法使用文件构造BuffereImage,因为这与映像无关。如关于BuffereImage所述 它管理内存中的图像,并提供存储、解释和获取像素数据的方法 这就是它应该关注的全部。因此,创建一个包装器类,您可以添加方法来执行任何操作
public class BufferedImageWrapper {
private BufferedImage bufferredImage;
public BufferedImageWrapper(File file) {
try {
bufferedImage = ImageIO.read(file);
} catch (IOException ex) {
ex.printStackTrace();
}
}
// your methods here
}
不要尝试复杂的事情。除非您试图覆盖某些实现(我建议您不要这样做),否则请遵循基本规则组合而不是继承。只需创建一个包装类,而不是尝试不必要地扩展BuffereImage。你正试图将各种顾虑结合起来,这是一个可怕的想法。无法使用文件构造BuffereImage,因为这与映像无关。如关于BuffereImage所述 它管理内存中的图像,并提供存储、解释和获取像素数据的方法 这就是它应该关注的全部。因此,创建一个包装器类,您可以添加方法来执行任何操作
public class BufferedImageWrapper {
private BufferedImage bufferredImage;
public BufferedImageWrapper(File file) {
try {
bufferedImage = ImageIO.read(file);
} catch (IOException ex) {
ex.printStackTrace();
}
}
// your methods here
}
我可能应该声明我完全同意@peeskillet,并且不建议使用我在下面建议的内容。:-) 但是,如果您真的想扩展
buffereImage
,您可以这样做(受我的旧类启发,它在沙盒中是有原因的…):
我可能应该声明我完全同意@peeskillet,并且不建议使用我在下面建议的内容。:-) 但是,如果您真的想扩展
buffereImage
,您可以这样做(受我的旧类启发,它在沙盒中是有原因的…):
为什么不能使用buffereImage=ImageIO.read(新文件(dir+“coffeecup.bmp”)代码>???因为我想创建一些附加方法。好的。。。什么样的方法,为什么?什么阻止了你?就目前而言,很难猜测你真正想要什么,或者你想做的事情是否可能。
BufferedImage
类没有任何从文件读取的方法…为什么不能使用BufferedImage image=ImageIO.read(新文件(dir+“coffecup.bmp”)代码>???因为我想创建一些附加方法。好的。。。什么样的方法,为什么?什么阻止了你?就目前而言,很难猜测你真正想要什么,或者你想做的事情是否可能。BufferedImage
类没有任何从文件中读取的方法……我将听取peeskillet的回答并使用他的想法,但是对于您的回复,thx也非常有用。:)我不会理会皮斯基勒的回答,也不会使用他的想法,但谢谢你的回复,它也非常有用。:)