2012-05-08 2 views

ответ

10

Я бы не назвал это объяснение ниже абсолютного уровня использования типов изображений Java, но это правило большого пальца, что я следую:

1. ImageIcon

Это, как правило, используется, когда у вас есть маленькие изображения, которые вы хотите добавить к кнопкам или использовать в качестве значков окна. Они могут создаваться непосредственно из всего, что реализует интерфейс Image.

2. BufferedImage

Обычно используется, когда вам нужно манипулировать отдельные пиксели в изображении, или когда вы хотите двойной буферизации обычай paint(Graphics g) метод. Изображение находится в ОЗУ, поэтому оно может занимать много места, а модификации экземпляров BufferedImage обычно не аппаратно ускоряются.

3. VolatileImage

Аппаратное ускорение изображения, так что быстро, но вы рискуете аппаратной спинками буфера переписывается, прежде чем вы закончите картина (хотя это случается редко, и в соответствии с Oracle , это только проблема для Windows-машин). Это немного сложнее в использовании, чем BufferedImage для двойного буферизации пользовательских методов paint(Graphics g), но это того стоит, если вы обнаружите, что делаете много предварительной обработки перед рендерингом на экран.

4. Изображение Это в основном только интерфейс, который определяет некоторые скелетные функциональные возможности, которые каждый Image должны иметь. Вы должны использовать это, когда вам не нужно изменять содержимое изображения и/или хотите, чтобы методы, которые обрабатывали данные только для чтения, были наиболее гибкими.

2

Кроме того, ImageIcon реализует сериализуемый интерфейс, поэтому вы можете отправлять его через java-сокеты. Если у вас есть объекты Image, вам необходимо преобразовать их в ImageIcon и отправить. Когда клиентская сторона приняла ImageIcons, она может снова конвертировать их в Images.

Смежные вопросы