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

probleme d'enregistrement de fichier

6 réponses
Avatar
zozo lafrite
bonjour,
voila le code de mon applet (vous avez le droit de critiquer !) et le
probleme suit apres

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;

public class Dessin extends Applet implements
MouseListener,MouseMotionListener,ActionListener {
int x0, y0, hMenu = 30;
Graphics g;
Color couleur;
Button rec = new Button("Enregistrer");
Choice coul = new Choice();

public void init() {
setBackground(Color.white);
couleur = Color.black;
x0 = 0;
y0 = 10;
g = getGraphics();
coul.addItem("noir");
coul.addItem("blanc");
coul.addItem("rouge");
coul.addItem("vert");
coul.addItem("bleu");
rec.addActionListener(this);
this.add(rec);
this.add(coul);
addMouseListener(this);
addMouseMotionListener(this);
}

public void mousePressed(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
x0=x;
y0=y>hMenu?y:hMenu;
}

public void mouseDragged(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
g.setColor(couleur);
g.drawLine(x0, y0, x, y>hMenu?y:hMenu);
x0=x;
y0=y>hMenu?y:hMenu;
}

public boolean action (Event event, Object eventArg){
if(event.target == coul){
if(eventArg.equals("noir")){
couleur = Color.black;
}else if(eventArg.equals("blanc")){
couleur = Color.white;
}else if(eventArg.equals("rouge")){
couleur = Color.red;
}else if(eventArg.equals("vert")){
couleur = Color.green;
}else if(eventArg.equals("bleu")){
couleur = Color.blue;
}else{
couleur = Color.black;
}
}
return true;
}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}

public void actionPerformed(ActionEvent a){
if ( (Button) a.getSource() == rec ){
try{
ObjectOutputStream os = new ObjectOutputStream(new
FileOutputStream("monimage.jpg"));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
BufferedImage img = new BufferedImage(400, 400,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
graphics = (Graphics2D)g;
encoder.encode(img);
os.close();
}catch(IOException e){
e.getMessage();
}
couleur = Color.black;
g.setColor(couleur);
g.drawString("fichier enregistrer",5,15);
}
}

}//fin de class

Donc dans ce code on creer un applet qui permet de faire un dessin a main
levée et avec differente couleurs.
Le but etant d'enregistrer ce "zoli" dessin!
c'est la que ca coince le fichier jpg rendu n'est pas un fichier jpg !
j'ai essyaer de creer un fichier qui n'etait pas le dessin c'est a dire en
remplacant la ligne "graphics = (Graphics2D)g;" par
graphics.drawString("test d'image",200,200);
mais toujours rien l'image JPEG n'est pas une image JPEG!!

si qqu'un a une idée ele sera la bienvenue !

Merci d'avance et a bientôt !!

6 réponses

Avatar
Jean Bernard Root
zozo lafrite wrote:

bonjour,
voila le code de mon applet (vous avez le droit de critiquer !) et le
probleme suit apres

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import com.sun.image.codec.jpeg.*;

public class Dessin extends Applet implements
MouseListener,MouseMotionListener,ActionListener {
int x0, y0, hMenu = 30;
Graphics g;
Color couleur;
Button rec = new Button("Enregistrer");
Choice coul = new Choice();

public void init() {
setBackground(Color.white);
couleur = Color.black;
x0 = 0;
y0 = 10;
g = getGraphics();
coul.addItem("noir");
coul.addItem("blanc");
coul.addItem("rouge");
coul.addItem("vert");
coul.addItem("bleu");
rec.addActionListener(this);
this.add(rec);
this.add(coul);
addMouseListener(this);
addMouseMotionListener(this);
}

public void mousePressed(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
x0=x;
y0=y>hMenu?y:hMenu;
}

public void mouseDragged(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
g.setColor(couleur);
g.drawLine(x0, y0, x, y>hMenu?y:hMenu);
x0=x;
y0=y>hMenu?y:hMenu;
}

public boolean action (Event event, Object eventArg){
if(event.target == coul){
if(eventArg.equals("noir")){
couleur = Color.black;
}else if(eventArg.equals("blanc")){
couleur = Color.white;
}else if(eventArg.equals("rouge")){
couleur = Color.red;
}else if(eventArg.equals("vert")){
couleur = Color.green;
}else if(eventArg.equals("bleu")){
couleur = Color.blue;
}else{
couleur = Color.black;
}
}
return true;
}

public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}

public void actionPerformed(ActionEvent a){
if ( (Button) a.getSource() == rec ){
try{
ObjectOutputStream os = new ObjectOutputStream(new
FileOutputStream("monimage.jpg"));
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(os);
BufferedImage img = new BufferedImage(400, 400,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
graphics = (Graphics2D)g;
encoder.encode(img);
os.close();
}catch(IOException e){
e.getMessage();
}
couleur = Color.black;
g.setColor(couleur);
g.drawString("fichier enregistrer",5,15);
}
}



Avec une telle gestion des exceptions, vous pouvez toujours vous gratter
pour savoir ce qui se passe ...

s/getMessage/printStacktrace ?

Etes-vous certain qu'un ObjectOutputStream fait ce que vous voulez ? Moi
je vous garantis que non.

Au pif, ce bout de code doit vous péter au nez :

Graphics2D graphics = img.createGraphics();
graphics = (Graphics2D)g;
encoder.encode(img);
os.close();


à quoi ça sert d'initialiser graphics pour le virer tout de suite ? Vous
faites quoi exactement là ? Le g (très bon nom de variable, d'ailleurs
!!!) que vous avez dessiné avec votre applet et devenu quoi après ?

Avatar
zozo lafrite
c'est encore moi bon j'ai resolu mon probleme d'enregistrement de fichier
mais maintenant j'ai un nouveau probleme!
Je ne peux bien evidement pas pour des raisons de securiter enregistrer le
fichier par la commande :
FileOutputStream file = new FileOutputStream("ZePicture.jpg");
etant donné que l'applet est executé par le client !!

comment peut-on faire pour que le fichier soit créé sur le serveur ?

Merci de votre precieuse aide

PS voici le nouveau code

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.security.AccessControlException;
import com.sun.image.codec.jpeg.*;

public class Dessin extends Applet implements
MouseListener,MouseMotionListener,ActionListener {
int x0, y0, hMenu = 30;
BufferedImage img = new BufferedImage(400, 400,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
Graphics graphApplet ;
Button rec = new Button("Enregistrer");
Choice coul = new Choice();
Color couleur = Color.black;
public void init() {
//couleur de fond de l'applet
setBackground(Color.white);
graphApplet = getGraphics();
graphics.setColor(Color.white);
graphics.fillRect(0,0,400,400);
coul.addItem("noir");
coul.addItem("blanc");
coul.addItem("rouge");
coul.addItem("vert");
coul.addItem("bleu");
this.add(rec);
this.add(coul);
rec.addActionListener(this);
addMouseListener(this);
addMouseMotionListener(this);
}
public void mousePressed(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
x0=x;
y0=y>hMenu?y:hMenu;
}
public void mouseDragged(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
graphApplet.setColor(couleur);
graphics.setColor(couleur);
graphApplet.drawLine(x0, y0, x, y>hMenu?y:hMenu);
graphics.drawLine(x0, y0, x, y>hMenu?y:hMenu);
x0=x;
y0=y>hMenu?y:hMenu;
}
public boolean action (Event event, Object eventArg){
if(event.target == coul){
if(eventArg.equals("noir")){
couleur = Color.black;
}else if(eventArg.equals("blanc")){
couleur = Color.white;
}else if(eventArg.equals("rouge")){
couleur = Color.red;
}else if(eventArg.equals("vert")){
couleur = Color.green;
}else if(eventArg.equals("bleu")){
couleur = Color.blue;
}else{
couleur = Color.black;
}
}
return true;
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}

public void actionPerformed(ActionEvent a){
if ( (Button) a.getSource() == rec ){
System.out.println("bonton enregistrer");
try{
FileOutputStream file = new
FileOutputStream("ZePicture.jpg");
JPEGImageEncoder encoder JPEGCodec.createJPEGEncoder(file);
JPEGEncodeParam param encoder.getDefaultJPEGEncodeParam(img);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(img);
couleur = Color.black;
graphApplet.setColor(couleur);
graphApplet.drawString("fichier enregistré",5,15);
file.close();
}catch(AccessControlException ace){
System.out.print(ace.getMessage());
graphApplet.drawString("pas le droit",5,15);
}
catch(IOException e){
System.out.println(e.getMessage());
graphApplet.drawString("pas de fichier",5,15);
}
}
}
}
Avatar
Bernard Koninckx
Bonjour,
Je n'ai jamais fait d'aplet, mais bon ...ce ne serait pas un cht'it problème
de singature d'applet ?

Bernard

"zozo lafrite" a écrit dans le message de news:
409c1941$0$13087$
c'est encore moi bon j'ai resolu mon probleme d'enregistrement de fichier
mais maintenant j'ai un nouveau probleme!
Je ne peux bien evidement pas pour des raisons de securiter enregistrer le
fichier par la commande :
FileOutputStream file = new FileOutputStream("ZePicture.jpg");
etant donné que l'applet est executé par le client !!

comment peut-on faire pour que le fichier soit créé sur le serveur ?

Merci de votre precieuse aide

PS voici le nouveau code

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.security.AccessControlException;
import com.sun.image.codec.jpeg.*;

public class Dessin extends Applet implements
MouseListener,MouseMotionListener,ActionListener {
int x0, y0, hMenu = 30;
BufferedImage img = new BufferedImage(400, 400,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
Graphics graphApplet ;
Button rec = new Button("Enregistrer");
Choice coul = new Choice();
Color couleur = Color.black;
public void init() {
//couleur de fond de l'applet
setBackground(Color.white);
graphApplet = getGraphics();
graphics.setColor(Color.white);
graphics.fillRect(0,0,400,400);
coul.addItem("noir");
coul.addItem("blanc");
coul.addItem("rouge");
coul.addItem("vert");
coul.addItem("bleu");
this.add(rec);
this.add(coul);
rec.addActionListener(this);
addMouseListener(this);
addMouseMotionListener(this);
}
public void mousePressed(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
x0=x;
y0=y>hMenu?y:hMenu;
}
public void mouseDragged(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
graphApplet.setColor(couleur);
graphics.setColor(couleur);
graphApplet.drawLine(x0, y0, x, y>hMenu?y:hMenu);
graphics.drawLine(x0, y0, x, y>hMenu?y:hMenu);
x0=x;
y0=y>hMenu?y:hMenu;
}
public boolean action (Event event, Object eventArg){
if(event.target == coul){
if(eventArg.equals("noir")){
couleur = Color.black;
}else if(eventArg.equals("blanc")){
couleur = Color.white;
}else if(eventArg.equals("rouge")){
couleur = Color.red;
}else if(eventArg.equals("vert")){
couleur = Color.green;
}else if(eventArg.equals("bleu")){
couleur = Color.blue;
}else{
couleur = Color.black;
}
}
return true;
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}

public void actionPerformed(ActionEvent a){
if ( (Button) a.getSource() == rec ){
System.out.println("bonton enregistrer");
try{
FileOutputStream file = new
FileOutputStream("ZePicture.jpg");
JPEGImageEncoder encoder > JPEGCodec.createJPEGEncoder(file);
JPEGEncodeParam param > encoder.getDefaultJPEGEncodeParam(img);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(img);
couleur = Color.black;
graphApplet.setColor(couleur);
graphApplet.drawString("fichier enregistré",5,15);
file.close();
}catch(AccessControlException ace){
System.out.print(ace.getMessage());
graphApplet.drawString("pas le droit",5,15);
}
catch(IOException e){
System.out.println(e.getMessage());
graphApplet.drawString("pas de fichier",5,15);
}
}
}
}




Avatar
zozo lafrite
Quand vous dites signature d'applet vous parlez de certification ??
Dans ce ca cela ne m'interesse pas je cherche seulement a avoir l'image du
coté serveur afin d'exposer ma galerie!


"Bernard Koninckx" a écrit dans le message de
news:409c61b6$0$22820$
Bonjour,
Je n'ai jamais fait d'aplet, mais bon ...ce ne serait pas un cht'it
problème

de singature d'applet ?

Bernard

"zozo lafrite" a écrit dans le message de news:
409c1941$0$13087$
c'est encore moi bon j'ai resolu mon probleme d'enregistrement de
fichier


mais maintenant j'ai un nouveau probleme!
Je ne peux bien evidement pas pour des raisons de securiter enregistrer
le


fichier par la commande :
FileOutputStream file = new FileOutputStream("ZePicture.jpg");
etant donné que l'applet est executé par le client !!

comment peut-on faire pour que le fichier soit créé sur le serveur ?

Merci de votre precieuse aide

PS voici le nouveau code

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.security.AccessControlException;
import com.sun.image.codec.jpeg.*;

public class Dessin extends Applet implements
MouseListener,MouseMotionListener,ActionListener {
int x0, y0, hMenu = 30;
BufferedImage img = new BufferedImage(400, 400,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
Graphics graphApplet ;
Button rec = new Button("Enregistrer");
Choice coul = new Choice();
Color couleur = Color.black;
public void init() {
//couleur de fond de l'applet
setBackground(Color.white);
graphApplet = getGraphics();
graphics.setColor(Color.white);
graphics.fillRect(0,0,400,400);
coul.addItem("noir");
coul.addItem("blanc");
coul.addItem("rouge");
coul.addItem("vert");
coul.addItem("bleu");
this.add(rec);
this.add(coul);
rec.addActionListener(this);
addMouseListener(this);
addMouseMotionListener(this);
}
public void mousePressed(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
x0=x;
y0=y>hMenu?y:hMenu;
}
public void mouseDragged(MouseEvent e){
int x,y;
x = e.getX();
y = e.getY();
graphApplet.setColor(couleur);
graphics.setColor(couleur);
graphApplet.drawLine(x0, y0, x, y>hMenu?y:hMenu);
graphics.drawLine(x0, y0, x, y>hMenu?y:hMenu);
x0=x;
y0=y>hMenu?y:hMenu;
}
public boolean action (Event event, Object eventArg){
if(event.target == coul){
if(eventArg.equals("noir")){
couleur = Color.black;
}else if(eventArg.equals("blanc")){
couleur = Color.white;
}else if(eventArg.equals("rouge")){
couleur = Color.red;
}else if(eventArg.equals("vert")){
couleur = Color.green;
}else if(eventArg.equals("bleu")){
couleur = Color.blue;
}else{
couleur = Color.black;
}
}
return true;
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}

public void actionPerformed(ActionEvent a){
if ( (Button) a.getSource() == rec ){
System.out.println("bonton enregistrer");
try{
FileOutputStream file = new
FileOutputStream("ZePicture.jpg");
JPEGImageEncoder encoder > > JPEGCodec.createJPEGEncoder(file);
JPEGEncodeParam param > > encoder.getDefaultJPEGEncodeParam(img);
param.setQuality(1.0f, false);
encoder.setJPEGEncodeParam(param);
encoder.encode(img);
couleur = Color.black;
graphApplet.setColor(couleur);
graphApplet.drawString("fichier enregistré",5,15);
file.close();
}catch(AccessControlException ace){
System.out.print(ace.getMessage());
graphApplet.drawString("pas le droit",5,15);
}
catch(IOException e){
System.out.println(e.getMessage());
graphApplet.drawString("pas de fichier",5,15);
}
}
}
}








Avatar
Jean Bernard Root
zozo lafrite wrote:

Quand vous dites signature d'applet vous parlez de certification ??
Dans ce ca cela ne m'interesse pas je cherche seulement a avoir l'image du
coté serveur afin d'exposer ma galerie!




Il faut envoyer le(s) fichier(s) à l'aide d'un protocole que vous
choisirez (je vous conseille, par HTTP, un POST en multipart) sur le
serveur, où vous aurez bien sur installé tout ce qu'il faut pour
recevoir le fichier et le traiter (servlet ?)

...

En tout cas ça n'est pas le genre de problème qui se résoud avec une
petite API :-)

Avatar
zozo lafrite
ben en fait je suis chez hebergé par free donc le probleme est plus
difficile que prevu !!
je vais changer d'optique pour non pas enregistrer sous forme de fichier
mais enregistrerr le jolie dessin dans la BDD directement et PHP fera le
reste :)
en esperant que ca marche !
Merci pour vos indications

"Jean Bernard Root" a écrit dans le message de
news:409cd102$0$17918$
zozo lafrite wrote:

Quand vous dites signature d'applet vous parlez de certification ??
Dans ce ca cela ne m'interesse pas je cherche seulement a avoir l'image
du


coté serveur afin d'exposer ma galerie!




Il faut envoyer le(s) fichier(s) à l'aide d'un protocole que vous
choisirez (je vous conseille, par HTTP, un POST en multipart) sur le
serveur, où vous aurez bien sur installé tout ce qu'il faut pour
recevoir le fichier et le traiter (servlet ?)

...

En tout cas ça n'est pas le genre de problème qui se résoud avec une
petite API :-)