Reduction de la taille d'une image et sauvegarde en bmp.
Bonjour a tous
J'ai un petit probleme concernant la gestion d'image. Je veux charger une image bitmap a partir d'un fichier, reduire sa taille en gardant ses proportions (je veux une hauteur de 512 pixels) et ensuite sauvegrader cette nouvelle image dans un fichier, en conservant le format bitmap.
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 25
|
//Je lis mon image a partir d'un chemin d'acces
BufferedImage im=ImageIO.read(new File(((File)implants[0]).getPath()));
int width = ((im.getWidth() * 512) / im.getHeight());
int height=512;
/* On crée une nouvelle image aux bonnes dimensions. */
BufferedImage buf = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
/* On dessine sur le Graphics de l'image bufferisée. */
Graphics2D g = buf.createGraphics();
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g.drawImage(im, 0, 0, width, height, null);
g.dispose();
//fichier dans lequel je veux copier ma nouvelle image
File fileToWriteTo=new File("C:/NewImages/"+0+"image.bmp");
//j'encode en bmp
OutputStream os = new FileOutputStream(fileToWriteTo);
com.sun.media.jai.codec.BMPEncodeParam param = new com.sun.media.jai.codec.BMPEncodeParam();
com.sun.media.jai.codec.ImageEncoder enc = com.sun.media.jai.codec.ImageCodec.createImageEncoder("BMP", os, param);
PlanarImage input =PlanarImage.wrapRenderedImage(buf); //JAI.create("fileload",implants[0].getPath());
enc.encode(input);
os.close(); |
Donc voila c'est tout ca qui ne marche pas. Ce qui ne marche pas en fait, c'est la sauvegarde au format bmp. Mais ce qui est bizarre, c'est que si j'essaye de sauvegrader mon image originale, ca marche, mais si je sauvegarde mon image reduite apres l'avoir encodee j'obtiens cette erreur :
Code:
1 2
|
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Only images with either 1 or 3 bands can be written out as BMP files. |
...que je ne comprends pas du tout.
Voila, si quelqu'un pouvait m'aider ce serait cool, en trouvant pourquoi ca marche pas ou en ayant une autre facon de faire. A mon avis, je suis pas le premier a avoir ce probleme de reduction de taill et de vouloir sauvegarder en bitmap.
Voile, merci d'avance
Thomas