LINUX.ORG.RU

История изменений

Исправление vtVitus, (текущая версия) :

Есть метод

byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
Это фактически прямой доступ, быстрее имно не бывает. Он возвращает массив компонентов. т.е. pixel[0] - (алфа канал первого пиксела, или голубой первого пиксела, если канала нет), pixel[1] - (голубой первого пиксела, если альфа канал, зелёный ежель альфы нет). и т.д.

Наличие альфы можно проверить

boolean hasAlphaChannel = image.getAlphaRaster() != null;

по мелочи

Массивы заполняются нулями

for(int i=0;i<256*256*256;i++) rgb=0; не нужно.

Исходная версия vtVitus, :

Есть метод

byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
Это фактически прямой доступ, быстрее имно не бывает. Он возвращает массив компонентов. т.е. pixel[0] - (алфа канал первого пиксела, или голубой первого пиксела, если канала нет), pixel[1] - (голубой первого пиксела, если альфа канал, зелёный ежель альфы нет). и т.д.

Наличие альфы можно проверить

boolean hasAlphaChannel = image.getAlphaRaster() != null;

по мелочи

Массивы заполняются нулями

for(int i=0;i<256*256*256;i++) rgb=0; не нужно.

img.getRaster().getPixel(x, y, (int [])null);

если третий параметр не нужен пиши туда null, будет значительно быстрее.