41 votes

Comment puis-je compresser des images ?

J'ai 5 000 images que je dois compresser (pour les afficher sur mon site web).

Je suis nouveau sur Ubuntu. Que dois-je faire ?

71voto

Le mot "compression" semble être mal interprété dans cette question, mais il reste valable selon le contexte dans lequel vous souhaitez le voir.

Le paysage

Il faut se rendre à l'évidence : les concepteurs, les développeurs et/ou les maîtres du Web ont besoin de "compresser" leurs fichiers images afin de les rendre suffisamment "légers" pour pouvoir les télécharger rapidement vers leur hébergement s'ils travaillent directement dans un environnement de production réel. Ce qui n'est pas le cas si nous travaillons dans un environnement de test local.

Beaucoup de réponses semblent se référer à d'autres choses, principalement parce que -probablement- ils n'ont pas été confrontés à de tels paysages. C'est pourquoi je commence à expliquer ceci.

Donc. Comprenons ce que la réponse doit résoudre :

  1. L'image DOIT être légère
  2. L'image DOIT être "compressée" afin de réduire la taille du fichier, mais pas "redimensionnée", comme l'a indiqué un autre utilisateur qui a cité un document dupliqué sur cette question. Compression et renommage de JPG par lots (find -exec, xargs, piping ?)
  3. Les images doivent être compressées par lots, de préférence via une interface graphique.

Légèreté de l'image

Comprenons d'abord ce qu'est une "image légère".

Les images haute définition, dont la résolution est supérieure à 1024 px, peuvent avoir une taille de fichier importante. Je donne un exemple sur cette capture d'écran :

enter image description here

enter image description here

Dans la fenêtre des propriétés du fichier, nous pouvons voir qu'il s'agit d'un fichier de 9,5 Mo, qui prendra beaucoup de temps à télécharger et à s'afficher à l'écran lorsqu'il sera publié sur un site web.

Néanmoins, la taille de l'image et la résolution de la grille sont vraiment utiles pour une impression haute définition. Il s'agit donc d'un autre paysage que je n'aborderai pas dans cette explication.

Alors, comment puis-je utiliser cette image sur un site web, sans avoir à attendre des années pour la télécharger et d'autres années pour l'afficher sur mon site web ?

Le fichier doit être compressé.

Et lorsque nous parlons de "compression", nous devons explicitement modifier sa qualité afin de la rendre utilisable dans le cas qui nous occupe.

Laissons donc tomber le prochain dans un terminal :

convert seminario-tabloide.png test.jpg

Il s'agit de convertir le format PNG haute définition en un format JPG "compressé", qui est en soi un fichier plus petit ! Il passe de 9,5 Mo à 2,4 Mo.

enter image description here

Encore grand ?

Mais 2,4 Mo, c'est quand même un gros fichier. Jouons maintenant avec d'autres ImageMagick convertir afin de réduire la taille des fichiers :

convert test.jpg -quality 50% test-50p.jpg

C'est ce qu'il faut faire pour "compresser" une image. Cela va réduire la qualité de l'image de 50% et donner une taille de fichier de 938.4 KB <=== (Note : KILOBYTES, pas même un Mégaoctet).

Nous pouvons aller plus loin et créer un fichier plus petit en ajustant le pourcentage dans la même commande via :

convert test.jpg -quality 30% test-30p.jpg

N'oubliez pas que dans cet exemple, nous réduisons la qualité du fichier, et non les dimensions de l'image. Le résultat est un fichier compressé qui n'est pas affecté visuellement lorsqu'il est affiché à l'écran, mais vous verrez les artefacts lors de l'impression sur un grand format de papier (plus grand que la lettre).

Redimensionnement + Compression = Super cool !

Aujourd'hui. Nous pouvons faire quelque chose de différent. En fait, il y a plusieurs choses à faire : Nous pouvons d'abord redimensionner les images et appliquer ensuite une compression, ce qui se traduira par une taille de fichier inférieure à celle de l'original et donnera une image utile pour un rendu à l'écran, moins bonne pour l'impression, mais il semble que nous ayons besoin de l'afficher à l'écran et non dans une bannière imprimée, n'est-ce pas ?

C'est ce que nous allons faire :

convert seminario-tabloide.png -resize 1024x test-1024x.jpg

Avec cette instruction, nous demandons à l'image d'être redimensionnée pour avoir une largeur de 1024 pixels, en ajoutant la quantité de pixels nécessaire pour ne pas perdre le rapport hauteur/largeur.

Maintenant... devinez quoi ?

La taille du fichier est passée de 9,5 Mo à... (musique de suspense avec congas s'il vous plaît) 433,7 KILO-OCTETS

Si nous souhaitons compresser au maximum un fichier compressé au maximum comme celui-ci, nous devrons faire face à des données de surcharge insérées dans le fichier, ce qui se traduira par une taille de fichier plus importante. Je ne vous suggérerai donc pas d'essayer, mais si vous attendez de moi que je fasse l'exemple, d'accord... C'est parti !

convert test-1024x.jpg -quality 50% test-1024x-50p.jpg

Et nous sommes allés de 433,7 KB à 176,2 KB en une seule commande. Cet exemple a été réussi, mais ne vous attendez pas à ce que les exercices se traduisent par une réduction de la taille des fichiers. Mais vous pouvez vous amuser en faisant ce genre d'exercices.

Processus par lots

Mais j'ai failli oublier l'un des besoins : Appliquer ce processus à un grand nombre d'images avec facilité.

Pour ce faire, nous pouvons utiliser deux procédés.

Le terminal

C'est plus rapide et plus facile. Indiquons donc au terminal que nous devons exécuter la même instruction dans tous les fichiers d'un répertoire, après quoi j'expliquerai d'autres instructions.

Convertissez toutes les images en 1024px (vous pouvez utiliser n'importe quel nombre de pixels)

for i in *; do convert $i -resize 1024x $i-1024x.jpg; done;

Ici, nous demandons à la commande d'exécuter la même instruction pour tous les fichiers d'un répertoire, d'appliquer la transformation et de déposer une copie portant un nom différent afin d'en faciliter la sélection.

Réduire la qualité en pourcentage (utilisez le pourcentage de votre choix) pour toutes les images d'un répertoire :

for i in *-1024x.jpg; do convert $i -quality 50% $i-50p.jpg; done;

Nous demandons ici que la qualité des images redimensionnées soit réduite afin de diminuer la taille des fichiers.

Vous pouvez jouer avec ces commandes et voir vos résultats. Après quelques heures d'amusement, vous serez un expert.

Nautilus script

Le 20 avril 2015, j'ai été confronté à la même situation que la question initiale, j'ai donc dû faire des recherches et demander de l'aide sur une question. C'est pourquoi j'en sais maintenant beaucoup. Ne croyez pas que je suis né avec ces connaissances.

Si vous n'êtes pas habitué aux terminaux et/ou si vous souhaitez utiliser une interface graphique pour choisir simplement vos groupes de fichiers et appliquer les transformations, vous pouvez créer vos propres actions Nautilus script afin de cliquer simplement avec le bouton droit de la souris sur le groupe de fichiers et de choisir une option dans le menu contextuel.

Pour savoir comment procéder, veuillez lire la question, la réponse et les commentaires ici : Comment traiter par lots des images JPG pour en modifier la qualité avec Nautilus-Actions ?

Bonne chance !

23voto

Mohamed Slama Points 1711

J'utilise Trimage très simple à utiliser.

Il suffit d'ajouter une image pour qu'elle soit compressée pour installer :

sudo apt-get install trimage

enter image description here

9voto

Kolappan N Points 717

La façon la plus simple de le faire dans la ligne de commande d'Ubuntu est d'utiliser ImageMagick .

  • Installez ImageMagick à l'aide de la commande sudo apt-get install imagemagick
  • Naviguez jusqu'au répertoire contenant les images.
  • Exécutez la commande mogrify -quality 75% *

Notes :

  • La liste complète des commandes pour mogrify se trouve à l'adresse suivante aquí .
  • Cette commande remplacera les anciennes images. Il est donc conseillé de faire une sauvegarde, juste au cas où.

1voto

yurenchen Points 245

Juste pour .png comprimer
// test avec le logiciel capture d'écran img

X. les résultats des tests d'abord

 146K  redis_insight_1.png    //orig screenshot
 102K  redis_insight_1-1.png  //optipng compress
  38K  redis_insight_1-2.png  //pngquant compress

 135K  resp_app_tree.png
  96K  resp_app_tree-1.png
  47K  resp_app_tree-2.png

  88K  redis-commander_tree2.png
  63K  redis-commander_tree2-1.png
  27K  redis-commander_tree2-2.png

  61K  redsmin_tree.png
  44K  redsmin_tree-1.png
  22K  redsmin_tree-2.png

Comparez soigneusement les images obtenues, il est presque impossible de les distinguer à l'œil nu.

1. optipng //compression sans perte

$ optipng redis_insight_1.png -out redis_insight_1-1.png

/niveau de compression plus élevé

$ optipng -o5 -strip all redis_insight_1.png -out redis_insight_1-1.png

2. pngquant //compression de perte

$ pngquant --speed 1 redis_insight_1.png -o redis_insight_1-1.png

--

ref : https://www.systutorials.com/compressing-png-images-on-linux/

0voto

ipse lute Points 2494

S'il s'agit d'images jpeg, de facto la compression n'est pas possible. Parce que le jpeg est par définition un format de fichier compressé (tous les bruits et pixels inutiles sont déjà supprimés). Vous pouvez les zipper, mais la taille totale restera à peu près la même. Le seul algorithme de compression avancé que je connaisse pour les jpegs est zipx. Mais zipx est une propriété de Winzip et garantit une réduction maximale de la taille de 30% (en mode archive zipx).

Pour afficher votre images sur le web, il faut d'abord les redimensionner (moins de 1MB par image) et éventuellement les convertir au format png. Le format PNG (=portable network graphics) est spécialement optimisé pour un transfert et un affichage plus rapides sur le web. Les utilisateurs avancés peuvent même convertir ces images au format webp (format Google pour les images, algorithme de chargement le plus rapide).

Vous pouvez convertir des images par lots avec XnConvert, puis redimensionner vos images par lots avec XnView. Téléchargez le paquet deb ici : http://www.xnview.com/de/xnviewmp/#downloads puis cliquez dessus avec le bouton droit de la souris et ouvrez-le avec Gnome Software.

Si vous ne vous souciez pas de la vitesse de chargement du réseau, mais de la qualité, vous devriez garder vos images intactes et créer une bibliothèque numérique pour elles. Vous pouvez les télécharger sur un serveur public (Yahoo, Google, etc.).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X