Ik probeer hier een image in te lezen in mijn Java-programma en daar de rgb-componenten van iedere pixel uit te halen.
De code:
Nu krijg ik steeds de exception
Exception in thread "main" java.lang.IllegalArgumentException: More than one component per pixel
at java.awt.image.ComponentColorModel.getRGBComponent(Unknown Source)
at java.awt.image.ComponentColorModel.getRed(Unknown Source)
at SObjectMaterial.getColor(SObjectMaterial.java:95)
Ik snap niet wat ik mis doe. Die ImageIO maakt een BufferedImage aan met het standaard kleurenmodel, ik roep daar de standaard pixelmethode op en geef die standaardpixel mee aan standaardkleurenmodel.
Volgens de API:
"ColorModel objects used with images for which pixel values are not conveniently representable as a single int throw an IllegalArgumentException when methods taking a single int pixel argument are called."
Wat doe ik verkeerd?
Ik heb al andere images geprobeerd, maar ik heb het overal voor.
De code:
Java:
1
2
3
4
5
6
7
8
| image = ImageIO.read(new File(texturePath)); int i = (int)Math.floor(tc.u*image.getWidth()); int j = (int)Math.floor(tc.v*image.getHeight()); int pixel = image.getRGB(i,j); float r = (float)(image.getColorModel().getRed(pixel)/255); float g = (float)(image.getColorModel().getGreen(pixel)/255); float b = (float)(image.getColorModel().getBlue(pixel)/255); return new float[] {r,g,b}; |
Nu krijg ik steeds de exception
Exception in thread "main" java.lang.IllegalArgumentException: More than one component per pixel
at java.awt.image.ComponentColorModel.getRGBComponent(Unknown Source)
at java.awt.image.ComponentColorModel.getRed(Unknown Source)
at SObjectMaterial.getColor(SObjectMaterial.java:95)
Ik snap niet wat ik mis doe. Die ImageIO maakt een BufferedImage aan met het standaard kleurenmodel, ik roep daar de standaard pixelmethode op en geef die standaardpixel mee aan standaardkleurenmodel.
Volgens de API:
"ColorModel objects used with images for which pixel values are not conveniently representable as a single int throw an IllegalArgumentException when methods taking a single int pixel argument are called."
Wat doe ik verkeerd?
Ik heb al andere images geprobeerd, maar ik heb het overal voor.