compression
Le
remy

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
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
௮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
--
http://remyaumeunier.chez-alice.fr/
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
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
௮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
--
http://remyaumeunier.chez-alice.fr/
remy
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.
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
--
http://remyaumeunier.chez-alice.fr/
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.
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.