В чем разница между Image и BufferedImage?
Можно ли создать BufferedImage непосредственно из источника изображения "image.png"?
В чем разница между Image и BufferedImage?
Можно ли создать BufferedImage непосредственно из источника изображения "image.png"?
Если вы знакомы с Java util.List, разница между Image и BufferedImage совпадает с разницей между List и LinkedList.
Изображение представляет собой общую концепцию, а BufferedImage - это конкретная реализация общей концепции; вроде как BMW - это марка автомобиля.
Изображение представляет собой абстрактный класс. Вы не можете напрямую копировать изображение. BufferedImage является потомком, и вы можете создать экземпляр этого. Итак, если вы понимаете абстрактные классы и наследование, вы поймете, когда использовать их.
Например, если вы использовали более одного потомка изображений, они собираются совместно использовать некоторые общие свойства, которые унаследованы от изображения.
Если вы хотите написать функцию, которая будет использовать любой вид потомка в качестве параметра, вы можете сделать что-то вроде этого:
function myFunction(Image myImage) {
int i = myImage.getHeight();
...
}
Затем вы можете вызвать функцию, передав ей BufferedImage или VolatileImage.
BufferedImage myBufferedImage;
VolatileImage myVolatileImage;
...
myFunction(myVolatileImage);
myFunction(myBufferedImage);
Вы не будете преобразовывать изображение в BufferedImage, потому что у вас никогда не будет изображения.
В чем разница между
Image
иBufferedImage
?
Как указано в учебнике Oracle Java для работы с изображениями
Класс BufferedImage является краеугольным камнем API визуализации немедленного режима Java 2D. Он управляет изображением в памяти и предоставляет методы для хранения, интерпретации и получения данных пикселей. Поскольку BufferedImage является подклассом Image, он может быть визуализирован с помощью методов Graphics и Graphics2D, которые принимают параметр Image.
BufferedImage - это по существу изображение с доступным буфером данных. Поэтому более эффективно работать непосредственно с BufferedImage. У BufferedImage есть ColorModel и Растр данных изображения. ColorModel обеспечивает цветную интерпретацию данных пикселя изображения.
Можно ли создать
BufferedImage
непосредственно из источника изображения "image.png"?
Конечно.
BufferedImage img = ImageIO.read(getClass().getResource("/path/to/image"));