Я хочу сохранить значение RGB в массиве пикселей следующим образом:DataBufferByte не может быть передан в DataBufferInt?
pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
где image
является:
BufferedImage image = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);
Я прочитал файл, используя ImageIO
и прочитать штраф, именно эта часть, проблема , Вот ошибка:
Exception in thread "main" java.lang.ClassCastException: java.awt.image.DataBufferByte cannot be cast to java.awt.image.DataBufferInt
at SpritePractice.render(SpritePractice.java:114)
at SpritePractice.run(SpritePractice.java:75)
at SpritePractice.start(SpritePractice.java:124)
at SpritePractice.main(SpritePractice.java:132)
и пикселей приведен целочисленный массив следующим образом: int[] pixels
Что мне делать? Как побочный вопрос, может кто-нибудь объяснить кастинг и что он делает? благодаря!
EDIT:
image.getRaster().getDataBuffer()
распечатываются на консоли
Heres выход:
[email protected]
Очевидно, что что-то здесь не так. Я уточнил, что BufferedImage image = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);
и читает DataBufferByte
...
здесь вы идете http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html – Nishant
Я не понимаю, почему это не работает, BufferedImage.TYPE_INT_RGB должен хранить данные изображения в int [], он работает для меня. ((DataBufferInt) img.getRaster(). GetDataBuffer()) \t \t \t \t .getData() подтверждает это – arynaq
Вы уверены, что это изображение вызывает ошибку, а не какой-то другой образ? – arynaq