Problème rotation PNG (Unknown image type 0)
Bonjour à tous, j'ai cherché en vain, sur les forums etc...mais j'ai rien trouvé alors je poste ici ma question.
Voilà je souhaite afficher une image dont on a préalablement fait une rotation.
voici le code :
Code:
1 2 3
| BufferedImage image = ImageIO.read(new File(nomImage));
image=rotation(image, 90);
g.drawImage(image, 0, 0, null); |
Le problème, c'est que j'ai droit à une erreur :
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Unknown image type 0
Mon image est une png. J'ai essayé avec des jpg, et cela fonctionne !
Ce qui m'étonne le plus, c'est qu'une buffered image est indépendante du type de l'image (d'après ce que j'ai pu lire).
Voyez-vous d'où viendrais le problème par chance ?
Par avance merci.
EDIT :
Pour info, voici la methode de rotation (trouvée sur internet)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public BufferedImage rotation(BufferedImage bi, int degrees) {
degrees = degrees % 360;
if (degrees > 180)
degrees = 180 - degrees;
double angle = (degrees * Math.PI) / 180.0f;
if (angle == 0.0)
return bi;
// TODO une vrai rotation pour calculer la taille exacte de l'image
// après rotation
int sx = bi.getWidth();
int sy = bi.getHeight();
if (degrees == 90 || degrees == -90) {
sx = bi.getHeight();
sy = bi.getWidth();
}
BufferedImage rot = new BufferedImage(sx, sy, bi.getType());
AffineTransform at = new AffineTransform();
at.translate(sx / 2, sy / 2);
at.rotate(angle);
at.translate(-bi.getWidth() / 2, -bi.getHeight() / 2);
AffineTransformOp ato = new AffineTransformOp(at,
AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
return ato.filter(bi, rot);
} |