Salut!
J'ai fait un petit programme dans lequel je dois redimensionner une photo choisie dans le système de fichier. Ma méthode pour redimensionner l'image ressemble à ça :
Mais j'ai de très mauvaises performances, en particulier sur les grosses photos (en terme de nombre de pixels plus que de taille sur le disque apparemment), le redimensionnement prend facilement une petite dizaine de secondes sur des photos de coté 500 ou 600 pixels environs, et pour les photos qui vont chercher dans les plus 1000*1000 pixels, ca travaille carrément un moment avant de me sortir cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public Image redimensionnerImage(Image im){ return im.getScaledInstance(80,120,Image.SCALE_DEFAULT); }
Est-ce que qqn connait une méthode plus légère pour redimensionner les images ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28 Exception during event dispatch: java.lang.ArrayIndexOutOfBoundsException: 9600 at gnu.java.awt.peer.gtk.GtkImageConsumer.setPixels(lib-gnu-java-awt-peer-gtk.so.7) at java.awt.image.ReplicateScaleFilter.setPixels(libgcj.so.7) at java.awt.image.BufferedImage$1.startProduction(libgcj.so.7) at java.awt.image.FilteredImageSource.startProduction(libgcj.so.7) at gnu.java.awt.peer.gtk.GtkImage.<init>(lib-gnu-java-awt-peer-gtk.so.7) at gnu.java.awt.peer.gtk.GtkToolkit.createImage(lib-gnu-java-awt-peer-gtk.so.7) at java.awt.Image.getScaledInstance(libgcj.so.7) at carteMakerFrame.redimensionnerImage(carteMaker.java:484) at carteMakerFrame.actionPerformed(carteMaker.java:310) at javax.swing.AbstractButton.fireActionPerformed(libgcj.so.7) at javax.swing.AbstractButton$1.actionPerformed(libgcj.so.7) at javax.swing.DefaultButtonModel.fireActionPerformed(libgcj.so.7) at javax.swing.DefaultButtonModel.setPressed(libgcj.so.7) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(libgcj.so.7) at java.awt.Component.processMouseEvent(libgcj.so.7) at java.awt.Component.processEvent(libgcj.so.7) at java.awt.Container.processEvent(libgcj.so.7) at java.awt.Component.dispatchEventImpl(libgcj.so.7) at java.awt.Container.dispatchEventImpl(libgcj.so.7) at java.awt.Component.dispatchEvent(libgcj.so.7) at java.awt.LightweightDispatcher.handleEvent(libgcj.so.7) at java.awt.Container.dispatchEventImpl(libgcj.so.7) at java.awt.Window.dispatchEventImpl(libgcj.so.7) at java.awt.Component.dispatchEvent(libgcj.so.7) at java.awt.EventQueue.dispatchEvent(libgcj.so.7) at java.awt.EventDispatchThread.run(libgcj.so.7)
Merci...
Partager