Спасибо aioobe, я посмотрел на класс WritableRaster
и нашел функцию getPixels
, которая делает именно то, что мне нужно, конечный результат:
public int[] getImageDataPort(BufferedImage image) {
int width = image.getWidth();
int height = image.getHeight();
int[] ret = null;
ret = image.getRaster().getPixels(0, 0, width, height, ret);
return ret;
}
Единственная проблема, которая может произойтиэто когда image.getType
не является типом, который поддерживает альфа по сравнению с кодом вопроса, что приводит к уменьшению int[] ret
, но можно просто преобразовать тип изображения с помощью:
public BufferedImage convertType(BufferedImage image,int type){
BufferedImage ret = new BufferedImage(image.getWidth(), image.getHeight(), type);
ColorConvertOp xformOp = new ColorConvertOp(null);
xformOp.filter(image, ret);
return ret;
}