2017-07-28 2 views
-1

J'ai vérifié beaucoup de sources au sujet de la compression LZW mais cela n'a pas fonctionné avec le dossier d'image.Java LZW compresse et décompresse avec l'image

Voici les ressources que j'ai vérifié à ce jour:

https://www.codemiles.com/java/lzw-data-compression-decompression-algorithm-java-code-t99.html

Celui-ci le fichier de compression est plus grand que le fichier d'origine

https://codereview.stackexchange.com/questions/122080/simplifying-lzw-compression-decompression

Pourriez-vous s'il vous plaît donner une ressource travailler avec la compression d'image? Merci !!!

+1

Quel type d'image? Les GIF sont déjà compressés avec LZW. En fait, la plupart des formats d'image sont compressés. Quel genre d'images sont-elles? Et quel type de compression est acceptable? Enfin, ne demandez pas de ressources hors site (hors sujet). –

+0

J'ai essayé de compresser le fichier jpeg, mais le fichier compressé semble être plus grand que l'original. –

+1

Correct. JPEG est déjà compressé. La compression d'un fichier compressé génère généralement un fichier plus volumineux. –

Répondre

0

La compression d'une image déjà compressée n'est pas une bonne idée, car la première compression supprime les indications statistiques que le second compresseur peut utiliser. C'est du moins vrai pour les algorithmes de compression contemporains, comme ils sont utilisés dans les formats d'image JPEG, PNG, GIF, TIFF et WebP. Généralement, un fichier compressé, visualisé dans un éditeur hexadécimal, ressemble à un flux d'octets aléatoires, et les données aléatoires (ou les données non aléatoires avec des propriétés statistiques similaires aux données aléatoires) ne peuvent pas être compressées. Habituellement, le résultat est encore plus grand que l'original, en raison de certains frais généraux dans le format de stockage. Les compresseurs intelligents détectent cette condition et reviennent simplement à stocker les données d'origine, plutôt que de les compresser. Par conséquent, si vous pensez que votre image pourrait être compressée davantage, vous devrez d'abord la décompresser. Ensuite, vous pouvez essayer un compresseur différent qui pourrait donner de meilleurs résultats. Cependant, je doute que toute variante LZW vous donnera un gain significatif sur JPEG. Bien que ce soit une amélioration très intelligente de la famille d'algorithmes de compression Lempel-Ziv, LZW est une technique purement sans perte, et a donc une limitation innée du taux de compression possible, enraciné dans la distribution statistique des données d'image. Le format JPEG et d'autres formats d'image avec perte permettent d'échanger la qualité d'image en fonction de la taille, et peuvent ainsi facilement surpasser les techniques sans perte.

Notez que le format GIF est un cas particulier. Bien qu'il utilise la compression LZW sans perte, il nécessite une palette de couleurs allant jusqu'à 256 entrées. Pour encoder une image colorée comme une photo en format GIF, vous devez d'abord quantifier l'espace colorimétrique pour obtenir une palette de 256 couleurs. C'est une fois de plus une technique avec perte, bien que très différente des algorithmes utilisés par JPEG et WebP avec perte. Les images GIF quantifiées des photos se compressent de manière excellente en raison de la réduction des informations RVB dans l'image, mais exposent des détériorations notables des dégradés de couleurs, comme on les trouve sur les visages humains, les feuilles de fleurs et un ciel nuageux. En aparté: Si GIF permet des palettes de couleurs plus grandes (disons, 1024), il peut devenir un véritable format de tueur pour les images photographiques. Peut-être qu'il est temps pour une mise à jour de format GIF17a ?!