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

compression

4 réponses
Avatar
remy
bonjour

je me demande si c'est moi qui ne suis pas dou=C3=A9 ou si c'est
les classes zip de jmv

j'ai cod=C3=A9 un petit exemple

allez zou

import java.awt.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

import java.util.zip.*;

public class Main
{
public static void main(String args[]) throws IOException
{
ZipFichier zip=3Dnew ZipFichier(args[0]);
}
}



import java.awt.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

import java.util.zip.*;

public class ZipFichier
{
ZipFichier(String zipName)
{
System.out.println(zipName);
save(zipName );
}
private void save(String zipName)
{


String[] filenames =3D new String[]{zipName};
byte[] buf =3D new byte[1024*10];

try {
// Create the ZIP file
String outFilename =3D zipName+".zip";
ZipOutputStream out =3D new ZipOutputStream(new=20
FileOutputStream(outFilename));
out.setLevel(Deflater.BEST_COMPRESSION);
for (int i=3D0; i<filenames.length; i++) {
FileInputStream in =3D new FileInputStream(filenames[i]);
out.putNextEntry(new ZipEntry(filenames[i]));
int len;
while ((len =3D in.read(buf)) > 0) {
out.write(buf, 0, len);
}
// Complete the entry
out.closeEntry();
in.close();
}
out.close();
} catch (IOException e) {
System.out.println(e);
}


}


}

ben le taux de compression est lamentable

remy@remy-desktop:~/Bureau/MyZip$ ls -la
total 2832
drwxr-xr-x 2 remy remy 4096 2009-11-05 14:47 .
drwxr-xr-x 6 remy remy 4096 2009-11-05 14:46 ..
-rw-r--r-- 1 remy remy 786572 2009-10-28 10:01 lena_std.tif
-rw-r--r-- 1 remy remy 584478 2009-11-05 14:37 lena_std.tif.bz2
-rw-r--r-- 1 remy remy 733501 2009-11-05 14:37 lena_std.tif.ref.zip
-rw-r--r-- 1 remy remy 734168 2009-11-05 14:47 lena_std.tif.zip



=E0=AF=AEt=E0=AB=9E=E0=B3=AEl'=ED=A9=AAlle zip ref a =C3=A9t=C3=A9 fait a=
vec le compacteur d'une ubuntu
le plus mauvais avec le code ci dessus, dit c'est normal ?
pourtant les zip java ne sont qu'une interface d'une appli C
si j'en crois le fichier src.zip de ma jmv



ne me dites pas qu'il faut que je me remette au C SVP

merci

--=20
http://remyaumeunier.chez-alice.fr/

4 réponses

Avatar
Yliur
Le Thu, 05 Nov 2009 15:01:08 +0100
remy ;> a écrit :

bonjour

je me demande si c'est moi qui ne suis pas doué ou si c'est
les classes zip de jmv

j'ai codé un petit exemple

allez zou

import java.awt.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

import java.util.zip.*;

public class Main
{
public static void main(String args[]) throws IOException
{
ZipFichier zip=new ZipFichier(args[0]);
}
}



import java.awt.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

import java.util.zip.*;

public class ZipFichier
{
ZipFichier(String zipName)
{
System.out.println(zipName);
save(zipName );
}
private void save(String zipName)
{


String[] filenames = new String[]{zipName};
byte[] buf = new byte[1024*10];

try {
// Create the ZIP file
String outFilename = zipName+".zip";
ZipOutputStream out = new ZipOutputStream(new
FileOutputStream(outFilename));
out.setLevel(Deflater.BEST_COMPRESSION);
for (int i=0; i<filenames.length; i++) {
FileInputStream in = new FileInputStream(filenames[i]);
out.putNextEntry(new ZipEntry(filenames[i]));
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
// Complete the entry
out.closeEntry();
in.close();
}
out.close();
} catch (IOException e) {
System.out.println(e);
}


}


}

ben le taux de compression est lamentable

:~/Bureau/MyZip$ ls -la
total 2832
drwxr-xr-x 2 remy remy 4096 2009-11-05 14:47 .
drwxr-xr-x 6 remy remy 4096 2009-11-05 14:46 ..
-rw-r--r-- 1 remy remy 786572 2009-10-28 10:01 lena_std.tif
-rw-r--r-- 1 remy remy 584478 2009-11-05 14:37 lena_std.tif.bz2
-rw-r--r-- 1 remy remy 733501 2009-11-05 14:37 lena_std.tif.ref.zip
-rw-r--r-- 1 remy remy 734168 2009-11-05 14:47 lena_std.tif.zip



௮tà«žà³®l'í©ªlle zip ref a été fait a vec le compacteur d'une
ubuntu le plus mauvais avec le code ci dessus, dit c'est normal ?
pourtant les zip java ne sont qu'une interface d'une appli C
si j'en crois le fichier src.zip de ma jmv



ne me dites pas qu'il faut que je me remette au C SVP

merci




Je ne vois pas où est le problème. Si j'ai bien compris le .tif.ref.zip
a été fait avec un programme zip externe et le .tif.zip avec ton
programme Java, c'est ça ? Et ils ont un taux de compression
similaire, donc je ne comprends pas ton problème. Ca veut sans doute
dire que l'algo de compression du format zip ne peut pas faire grand
chose pour ton fichier... On peut noter que bz2, souvent beaucoup
plus efficace, a effectivement été meilleur mais n'a enlevé qu'un
petit tiers de la taille du fichier.

Note : jvm (Java Virtual Machine) ; ou si tu veux en français mvj, même
si on ne le trouve pas tellement...

Et avec de la ponctuation c'est plus facile à lire.
Avatar
remy
Yliur a écrit :
Le Thu, 05 Nov 2009 15:01:08 +0100
remy ;> a écrit :

bonjour

je me demande si c'est moi qui ne suis pas doué ou si c'est
les classes zip de jmv

j'ai codé un petit exemple

allez zou

import java.awt.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

import java.util.zip.*;

public class Main
{
public static void main(String args[]) throws IOException
{
ZipFichier zip=new ZipFichier(args[0]);
}
}



import java.awt.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

import java.util.zip.*;

public class ZipFichier
{
ZipFichier(String zipName)
{
System.out.println(zipName);
save(zipName );
}
private void save(String zipName)
{


String[] filenames = new String[]{zipName};
byte[] buf = new byte[1024*10];

try {
// Create the ZIP file
String outFilename = zipName+".zip";
ZipOutputStream out = new ZipOutputStream(new
FileOutputStream(outFilename));
out.setLevel(Deflater.BEST_COMPRESSION);
for (int i=0; i<filenames.length; i++) {
FileInputStream in = new FileInputStream(filenames[i]);
out.putNextEntry(new ZipEntry(filenames[i]));
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
// Complete the entry
out.closeEntry();
in.close();
}
out.close();
} catch (IOException e) {
System.out.println(e);
}


}


}

ben le taux de compression est lamentable

:~/Bureau/MyZip$ ls -la
total 2832
drwxr-xr-x 2 remy remy 4096 2009-11-05 14:47 .
drwxr-xr-x 6 remy remy 4096 2009-11-05 14:46 ..
-rw-r--r-- 1 remy remy 786572 2009-10-28 10:01 lena_std.tif
-rw-r--r-- 1 remy remy 584478 2009-11-05 14:37 lena_std.tif.bz2
-rw-r--r-- 1 remy remy 733501 2009-11-05 14:37 lena_std.tif.ref.zip
-rw-r--r-- 1 remy remy 734168 2009-11-05 14:47 lena_std.tif.zip



௮tà«žà³®l'í©ªlle zip ref a été fai t avec le compacteur d'une
ubuntu le plus mauvais avec le code ci dessus, dit c'est normal ?
pourtant les zip java ne sont qu'une interface d'une appli C
si j'en crois le fichier src.zip de ma jmv



ne me dites pas qu'il faut que je me remette au C SVP

merci




Je ne vois pas où est le problème. Si j'ai bien compris le .tif.ref .zip
a été fait avec un programme zip externe et le .tif.zip avec ton
programme Java, c'est ça ? Et ils ont un taux de compression
similaire, donc je ne comprends pas ton problème. Ca veut sans dout e
dire que l'algo de compression du format zip ne peut pas faire grand
chose pour ton fichier...



oui ,surement mais la compression effectuée avec le code java
n'est pas optimum

j'avais naïvement pensé que j'aurais un résultat identique
comme il faut que j'aille voir si je peux gratter quelques pouièmes
il va falloir que je me remette au C


On peut noter que bz2, souvent beaucoup
plus efficace, a effectivement été meilleur mais n'a enlevé qu' un
petit tiers de la taille du fichier.

Note : jvm (Java Virtual Machine) ; ou si tu veux en français mvj, mê me
si on ne le trouve pas tellement...

Et avec de la ponctuation c'est plus facile à lire.





--
http://remyaumeunier.chez-alice.fr/
Avatar
Yliur
> > Je ne vois pas où est le problème. Si j'ai bien compris
> le .tif.ref.zip a été fait avec un programme zip externe et
> le .tif.zip avec ton programme Java, c'est ça ? Et ils ont un taux
> de compression similaire, donc je ne comprends pas ton problème. Ca
> veut sans doute dire que l'algo de compression du format zip ne
> peut pas faire grand chose pour ton fichier...

oui ,surement mais la compression effectuée avec le code java
n'est pas optimum

j'avais naïvement pensé que j'aurais un résultat identique
comme il faut que j'aille voir si je peux gratter quelques pouièmes
il va falloir que je me remette au C



Je ne vois pas bien l'intérêt de gagner quelques pouillèmes vu le
niveau de compression de toutes manières. Et as-tu essayé sur
d'autres fichiers ? Sinon tu as la compression destructive si ce sont
des images, est-ce que ça peut convenir à ton programme ?

Sur quelles plates-formes doit s'exécuter ton programme ? Si ce sont
des Unix, tu dois pouvoir appeler une commande pour compresser ton
fichier (par exemple bzip2 ou 7z), et tu gagneras plus que des
pouillèmes apparemment :) .

Ou alors il reste la solution de trouver (ou coder) une classe de
compression bzip2 ou LZMA en Java, Pour le second algo, j'en avais
trouvé une sur Sourceforge. C'est l'algo par défaut de 7-zip, en
général très efficace. Par contre ça ne génère pas des archiv es 7z,
ça effectue juste la compression du flux.
Avatar
steph
remy wrote:
bonjour

je me demande si c'est moi qui ne suis pas doué ou si c'est
les classes zip de jmv

j'ai codé un petit exemple

allez zou

import java.awt.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

import java.util.zip.*;

public class Main
{
public static void main(String args[]) throws IOException
{
ZipFichier zip=new ZipFichier(args[0]);
}
}



import java.awt.*;
import java.io.*;
import java.util.*;
import java.lang.*;
import java.math.*;

import java.util.zip.*;

public class ZipFichier
{
ZipFichier(String zipName)
{
System.out.println(zipName);
save(zipName );
}
private void save(String zipName)
{


String[] filenames = new String[]{zipName};
byte[] buf = new byte[1024*10];

try {
// Create the ZIP file
String outFilename = zipName+".zip";
ZipOutputStream out = new ZipOutputStream(new
FileOutputStream(outFilename));
out.setLevel(Deflater.BEST_COMPRESSION);
for (int i=0; i<filenames.length; i++) {
FileInputStream in = new FileInputStream(filenames[i]);
out.putNextEntry(new ZipEntry(filenames[i]));
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
// Complete the entry
out.closeEntry();
in.close();
}
out.close();
} catch (IOException e) {
System.out.println(e);
}


}


}

ben le taux de compression est lamentable

:~/Bureau/MyZip$ ls -la
total 2832
drwxr-xr-x 2 remy remy 4096 2009-11-05 14:47 .
drwxr-xr-x 6 remy remy 4096 2009-11-05 14:46 ..
-rw-r--r-- 1 remy remy 786572 2009-10-28 10:01 lena_std.tif
-rw-r--r-- 1 remy remy 584478 2009-11-05 14:37 lena_std.tif.bz2
-rw-r--r-- 1 remy remy 733501 2009-11-05 14:37 lena_std.tif.ref.zip
-rw-r--r-- 1 remy remy 734168 2009-11-05 14:47 lena_std.tif.zip



௮t૞೮l'�lle zip ref a été fait avec le compacteur d'une ubuntu
le plus mauvais avec le code ci dessus, dit c'est normal ?
pourtant les zip java ne sont qu'une interface d'une appli C
si j'en crois le fichier src.zip de ma jmv



ne me dites pas qu'il faut que je me remette au C SVP

merci




Si ".tif" fait bien référence à une image au format TIFF, il ne faut pas
attendre de miracle d'une compression. C'est déjà un format compressé
d'image, donc proche de son stockage minimum.
A la rigueur tenter une compression png (sans perte) ou jpeg (avec
perte) avec un outil comme ImageMagick.