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

zip et gif

7 réponses
Avatar
remy
bonjour

pour lire un image dans un fichier zip
il faut obligatoirement que passe par un fichier temporaire ?
ou il existe un autre solution
j'utilise actuellement la class ImageIcon mais je peut changer
si il faut

merci


--
des conneries j'en ai dites oui oui je vous assure...
mais elles n'engagent que votre perception
remy

7 réponses

Avatar
Fabien Bergeret
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

bonjour

pour lire un image dans un fichier zip
il faut obligatoirement que passe par un fichier temporaire ?
ou il existe un autre solution
j'utilise actuellement la class ImageIcon mais je peut changer
si il faut

merci


Le constructeur de ImageIcon prend une URL en parametre.

Il suffit, dans une classe issue de ton zip, que tu fasse
getClass().getResource("cheminDuGifDansLeZip"), et tu recupere une URL
que tu passes au constructeur

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFEmZplIwyDPySledERAv/tAJ4yLMaBZxMc7lzV4UkQ9EQraTyPqQCffvkk
th0BEmzS34b4NTWfh6xQYyQ =iw/+
-----END PGP SIGNATURE-----

Avatar
Xavier Tarrago
Peut-être que tu peux utiliser une url jar:

JAR URL
The syntax of a JAR URL is:
jar:<url>!/{entry}

for example:
jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class
jar:file:/export/home/faculty/stansif/public_html/java/applets/image/view.ja
r!/image.gif

Ou des outils de manipulation de zip :

java.util.zip
Class ZipFile
java.lang.Object
java.util.zip.ZipFile

All Implemented Interfaces:
java.util.zip.ZipConstants
Direct Known Subclasses:
JarFile

public class ZipFile
extends Object
implements java.util.zip.ZipConstants
This class is used to read entries from a zip file.

getEntry
public ZipEntry getEntry(String name)
Returns the zip file entry for the specified name, or null if not found.

getInputStream
public InputStream getInputStream(ZipEntry entry)
throws IOException
Returns an input stream for reading the contents of the specified zip file
entry. Returns an input stream for reading the contents of the specified zip
file entry.
Closing this ZIP file will, in turn, close all input streams that have been
returned by invocations of this method.


"remy" a écrit dans le message de
news:e7bphm$43m$
bonjour

pour lire un image dans un fichier zip
il faut obligatoirement que passe par un fichier temporaire ?
ou il existe un autre solution
j'utilise actuellement la class ImageIcon mais je peut changer
si il faut

merci


--
des conneries j'en ai dites oui oui je vous assure...
mais elles n'engagent que votre perception
remy


Avatar
remy
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

bonjour

pour lire un image dans un fichier zip
il faut obligatoirement que passe par un fichier temporaire ?
ou il existe un autre solution
j'utilise actuellement la class ImageIcon mais je peut changer
si il faut

merci


Le constructeur de ImageIcon prend une URL en parametre.

Il suffit, dans une classe issue de ton zip, que tu fasse
getClass().getResource("cheminDuGifDansLeZip"), et tu recupere une URL
que tu passes au constructeur



heu oui mais le zip qui contient le gif n'est pas dans un jar
en gros un format de fichiers a la con made in moi

dans fichier zip
un descripteur de contenu xml
des répertoires + des fichiers wav ,gif entre autres

le but du jeu récupérer l'image dans le zip
et il est bien évident qu'il peut y avoir énormément de "zip a la con"
donc pas dans le path ou classpath et l'utilisateur le met ou il veut
donc ...



--
des conneries j'en ai dites oui oui je vous assure...
mais elles n'engagent que votre perception
remy


Avatar
remy
/**
* Returns the extra field data for the entry, or null if none.
* @return the extra field data for the entry, or null if none
* @see #setExtra(byte[])
*/
public byte[] getExtra() {
return extra;
}

import java.util.*;
import java.util.zip.*;
import java.io.*;
import javax.swing.*;

public class Main {


public static void main(String[] args) throws IOException
{


File tmpFile = new File("c:/france-dep-loup.zip");
ZipInputStream in = new ZipInputStream(new FileInputStream(tmpFile));

ZipEntry entry = in.getNextEntry();
if (entry != null)
{
String name=entry.getName();
System.out.println(name);
byte[] b=entry.getExtra();

System.out.println(b);
ImageIcon icon=new ImageIcon(b);
JFrame f=new JFrame();
JLabel l=new JLabel(icon);
f.add(l);
f.setSize(700, 500);
f.setVisible(true);

}


}
}




b=null
mais
System.out.println(name);
fct bien :-(

--
des conneries j'en ai dites oui oui je vous assure...
mais elles n'engagent que votre perception
remy
Avatar
remy
public static void main(String[] args) throws IOException
{
File tmpFile = new File("c:/france-dep-loup.zip");
ZipInputStream in = new ZipInputStream(new FileInputStream(tmpFile));
ZipEntry entry = in.getNextEntry();
if (entry != null)
{
String name=entry.getName();
System.out.println(name+" "+entry.getSize());
byte[] buffer = new byte[(int)entry.getSize()];
System.out.println(buffer);

in.read(buffer);

ImageIcon icon=new ImageIcon(buffer);
JFrame f=new JFrame();
JLabel l=new JLabel("test",icon,JLabel.CENTER);
f.add(l);
f.setSize(700, 500);
f.setVisible(true);

}


}


bon maintenant je charge bien dans le tableau buffer mais il doit y
avoir une histoire de codec en gros aucune image

et ça cela ne m'arrange pas vraiment il va falloir que je fasse le tri
entre les differents type d'image
donc le plus simple passe par un fichier temporaire
sauf si ...


--
des conneries j'en ai dites oui oui je vous assure...
mais elles n'engagent que votre perception
remy
Avatar
Harald Mouchobauer
remy avait prétendu :
public static void main(String[] args) throws IOException
{
File tmpFile = new File("c:/france-dep-loup.zip");
ZipInputStream in = new ZipInputStream(new FileInputStream(tmpFile));
ZipEntry entry = in.getNextEntry();
if (entry != null)
{
String name=entry.getName();
System.out.println(name+" "+entry.getSize());
byte[] buffer = new byte[(int)entry.getSize()];
System.out.println(buffer);

in.read(buffer);

ImageIcon icon=new ImageIcon(buffer);
JFrame f=new JFrame();
JLabel l=new JLabel("test",icon,JLabel.CENTER);
f.add(l);
f.setSize(700, 500);
f.setVisible(true);

}


}


bon maintenant je charge bien dans le tableau buffer mais il doit y avoir une
histoire de codec en gros aucune image

et ça cela ne m'arrange pas vraiment il va falloir que je fasse le tri
entre les differents type d'image
donc le plus simple passe par un fichier temporaire
sauf si ...


Tu es sur la bonne voie, peut être un probleme d'attente de chargement
de l'image, essais d'utiliser un MediaTracker, cf
<URL:http://forum.java.sun.com/thread.jspa?forumID%6&threadIDT1083>

--
DM

Avatar
remy
bonjour

Tu es sur la bonne voie, peut être un probleme d'attente de chargement
de l'image, essais d'utiliser un MediaTracker, cf
<URL:http://forum.java.sun.com/thread.jspa?forumID%6&threadIDT1083>

merci pour le lien

mon pb etais lie a la lecture
un exemple qui fct pour google




import java.io.IOException;
import textImg.*;

import java.awt.*;
import java.util.*;
import java.util.zip.*;
import java.io.*;
import javax.swing.*;

public class Main {

public static void main(String[] args) throws IOException
{
ZipFile zip = new ZipFile("c:/france-dep-loup.zip");
ZipEntry entry = zip.getEntry( "france-dep-loup.gif");

if ( entry == null ) { System.out.println( "Image Not Found" ); }
InputStream zinput = zip.getInputStream( entry );
byte[] imageBuf = new byte[512];
ByteArrayOutputStream boutstream = new ByteArrayOutputStream();
try
{
int bytesread = 1;
while (bytesread > 0){
bytesread = zinput.read(imageBuf);
if(bytesread > 0) boutstream.write(imageBuf,0,bytesread);
}

byte []pixmap = boutstream.toByteArray();
boutstream.flush();
ImageIcon icon=new ImageIcon(pixmap);
JFrame f=new JFrame();
JLabel l=new JLabel("test",icon,JLabel.CENTER);

f.add(l);
f.setSize(700, 500);
f.setVisible(true);
} catch (Exception e) { System.out.println(e); }

}
}



--
des conneries j'en ai dites oui oui je vous assure...
mais elles n'engagent que votre perception
remy