Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conversion en Gif

7 réponses
Avatar
Vincent - Gamin
Bonjour

J'ai un problème pour convertir un objet de type Image en un gif.
J'utilise le package Acme contenant la classe GifEncoder.

Je compiles avec :
javac -classpath c:\java\gif\Acme\JPM\Encoders;./ Img.java
j'obtiens :
Img : cannot access ImageEncoder
bad class file: c:\java\gif\Acme\JPM\Encoders\ImageEncoder.class
class file contains wrong class : Acme.JPM...
Please remove or make sur it appears in the correct subdirectory of the
classpath.

Le chemin du classpath est pourtant le bon. Si je le retire, j'obtiens un
cannot resolve symbol.

Quelqu'un a déjà utilisé cet classe pour encoder un fichier en .gif ?
Je serais heureux d'avoir une partie du code permettant d'utiliser cette
classe.

Merci.

7 réponses

Avatar
MacTotoche
Vincent - Gamin wrote:
Je compiles avec :
javac -classpath c:javagifAcmeJPMEncoders;./ Img.java
Hello,

iznogood car sauf erreur :
- le séparateur de path est ":" et non ";"
- (en plus le / après le . me paraît douteux, sourtout sous win,
sauf si j'ai raté qqch car ça n'est pas mon environnement)
- le path est en partie le reflet du nom du package et c'est
seulement la racine du package qui doit apparaître dans le path
(voir au besoin le tutorial chez sun qui explique ça bien)

au total j'aurais mis qqch comme :
javac -classpath c:javagif:. Img.java

j'obtiens :
Img : cannot access ImageEncoder
bad class file: c:javagifAcmeJPMEncodersImageEncoder.class
class file contains wrong class : Acme.JPM...
Please remove or make sur it appears in the correct subdirectory of the
classpath.
Ce message semble compatible avec le probleme de -cp pour le path qui

fait doublon avec le nom du package.

javac prend la racine du package et rajoute lui-même les éléments de
path correspondant au nom du package. Du coup, AcmeJPMEncoders fait
doublon avec package Acme.JPM.Encoders. dans le code.

Le chemin du classpath est pourtant le bon. Si je le retire, j'obtiens un
cannot resolve symbol.
Ca serait vrai si la classe en cause était toplevel (ou hors package),

mais pas exact dans ce cas.

Quelqu'un a déjà utilisé cet classe pour encoder un fichier en .gif ?
Je serais heureux d'avoir une partie du code permettant d'utiliser cette
classe.
Justement, c'est l'occasion, je vais essayer d'essayer.


--
Olivier
This space for sale.

Avatar
MacTotoche
Vincent - Gamin wrote:
Quelqu'un a déjà utilisé cet classe pour encoder un fichier en .gif ?
Je serais heureux d'avoir une partie du code permettant d'utiliser cette
classe.
Re-Hello,

l'utilisation de GifEncoder semble super-commode, comme le montre le
bout de code suivant, par ailleurs assez inepte :-) :

import java.applet.*;

import java.awt.*;

import java.io.*;

import Acme.JPM.Encoders.GifEncoder;

// si le dir Acme est au meme niveau que ce source,
// compiler par : javac GifTester.java
// sinons par : javac -classpath path/to/Acme GifTester.java

// si le dir Acme est au meme niveau que ce source,
// lancer en tant qu'application par : java GifTester
// sinon par : java -classpath path/to/Acme:. GifTester

public class GifTester extends Applet {

public static void main(String[] args) {
//System.setProperty("apple.awt.brushMetalLook", "true");
Frame f = new Frame("GifTester");

f.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});

GifTester applet = new GifTester();

f.add("Center", applet);
f.setSize(500, 200);
f.setVisible(true);

applet.init();
applet.start();
}

private Image image;
private Graphics offscreen;
private int size = 50;

public void init() {
}

public void start() {
try {
image = createImage(getWidth(), getHeight());
offscreen = image.getGraphics();

offscreen.setColor(Color.blue);
offscreen.drawOval(10, 10, size, size);

// sauve l'image en gif
GifEncoder encoder = new GifEncoder(image, new
FileOutputStream("GifTesterOut.gif"));
encoder.encode();
}
catch (Exception ex) { ex.printStackTrace();}
}

public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
}

--
Olivier
This space for sale.

Avatar
Cedric
Est-ce que le package Acme est freeware ? Peut-on utiliser le package/source
code tel quel a toute fin, y compris modification, etc... ?

Cedric
Avatar
MacTotoche
Cedric wrote:
Est-ce que le package Acme est freeware ? Peut-on utiliser le package/source
code tel quel a toute fin, y compris modification, etc... ?
n'hésite pas à aller voir.


--
Olivier
This space for sale.

Avatar
Cedric
Du site:

" ACME Java - Software
All of this is completely free for any use, educational commercial or
whatever."

Merci :)
Avatar
Vincent - Gamin
Merci, ça fonctionne àmerveille maintenant.

J'avais oublié le import Acme.JPM... je pensais que le classpath suffisait.

Vincent
"MacTotoche" a écrit dans le message de news:
3f0bb464$0$10883$
Vincent - Gamin wrote:
Quelqu'un a déjà utilisé cet classe pour encoder un fichier en .gif ?
Je serais heureux d'avoir une partie du code permettant d'utiliser cette
classe.
Re-Hello,

l'utilisation de GifEncoder semble super-commode, comme le montre le
bout de code suivant, par ailleurs assez inepte :-) :

import java.applet.*;

import java.awt.*;

import java.io.*;

import Acme.JPM.Encoders.GifEncoder;

// si le dir Acme est au meme niveau que ce source,
// compiler par : javac GifTester.java
// sinons par : javac -classpath path/to/Acme GifTester.java

// si le dir Acme est au meme niveau que ce source,
// lancer en tant qu'application par : java GifTester
// sinon par : java -classpath path/to/Acme:. GifTester

public class GifTester extends Applet {

public static void main(String[] args) {
//System.setProperty("apple.awt.brushMetalLook", "true");
Frame f = new Frame("GifTester");

f.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});

GifTester applet = new GifTester();

f.add("Center", applet);
f.setSize(500, 200);
f.setVisible(true);

applet.init();
applet.start();
}

private Image image;
private Graphics offscreen;
private int size = 50;

public void init() {
}

public void start() {
try {
image = createImage(getWidth(), getHeight());
offscreen = image.getGraphics();

offscreen.setColor(Color.blue);
offscreen.drawOval(10, 10, size, size);

// sauve l'image en gif
GifEncoder encoder = new GifEncoder(image, new
FileOutputStream("GifTesterOut.gif"));
encoder.encode();
}
catch (Exception ex) { ex.printStackTrace();}
}

public void paint(Graphics g) {
g.drawImage(image, 0, 0, this);
}
}

--
Olivier
This space for sale.




Avatar
Joe Smith
"Cedric" wrote in message
news:3f0bb7f9$0$10862$
Est-ce que le package Acme est freeware ? Peut-on utiliser le
package/source

code tel quel a toute fin, y compris modification, etc... ?

Cedric

Attention!

La génération du Gif est encore "payant", il y a un brevet sur l'algorithme
de compression...(Compuserve)

PNG peut-être une bonne alternative.