If you are trying to get the pixel data as an array, you can use ImageIO.read()to get BufferedImage, and then use BufferedImage.getRaster().getDataBuffer()to get DataBuffer. From there you need to check what type BufferedImageyou have in order to determine how to distinguish DataBuffer. For instance. if you have an image TYPE_INT_RGB, then you must overlay on DataBufferInt, and then you can call DataBufferInt.getData()to retrieve int[]that contains the data. What you get in this way is not a copy --- this is the actual array supporting it BufferedImage.
, : ImageIO.read() , . , TYPE_CUSTOM, , , , .
, ImageIO.read(), , , ImageIO.read() , . , ImageIO, ImageIO.getImageReaders(), Iterator , , , ImageReader.getImageTypes(0) Iterator , . , , , .
, . , , BufferedImage.getRGB() ( , GZIPOutputStream), BufferedImage , , , BufferedImage.setRGB(). ( -, , , . LGPL'd .)