Sådan optimeres og komprimeres JPEG- eller PNG-billeder i Linux Commandline


Du har mange billeder og vil optimere og komprimere billederne uden at miste sin oprindelige kvalitet, inden du uploader dem til skyer eller lokale lagre? Der er masser af GUI-applikationer til rådighed, som hjælper dig med at optimere billederne. Her er dog to enkle kommandolinjeværktøjer til at optimere billeder, og de er:

  1. jpegoptim - er et værktøj til at optimere/komprimere JPEG-filer uden at miste kvalitet.
  2. OptiPNG - er et lille program, der optimerer PNG-billeder til mindre størrelse uden at miste nogen oplysninger.

Ved hjælp af disse to værktøjer kan du enten optimere et enkelt eller flere billeder ad gangen.

Komprimer eller optimer JPEG-billeder fra kommandolinjen

jpegoptim er et kommandolinjeværktøj, der kan bruges til at optimere og komprimere JPEG-, JPG- og JFIF-filer uden at miste den faktiske kvalitet. Dette værktøj understøtter tabsfri optimering, som er baseret på optimering af Huffman-tabellerne.

For at installere jpegoptim på dine Linux-systemer skal du køre følgende kommando fra din terminal.

# apt-get install jpegoptim
or
$ sudo apt-get install jpegoptim

På RPM-baserede systemer som RHEL, CentOS, Fedora osv. Skal du installere og aktivere EPEL repository eller alternativt kan du installere epel repository direkte fra kommandolinjen som vist:

# yum install epel-release
# dnf install epel-release    [On Fedora 22+ versions]

Installer derefter jpegoptim-programmet fra lageret som vist:

# yum install jpegoptim
# dnf install jpegoptim    [On Fedora 22+ versions]

Syntaksen for jpegoptm er:

$ jpegoptim filename.jpeg
$ jpegoptim [options] filename.jpeg

Lad os nu komprimere følgende tecmint.jpeg -billede, men inden du optimerer billedet, skal du først finde ud af den faktiske størrelse på billedet ved hjælp af du-kommandoen som vist.

$ du -sh tecmint.jpeg 

6.2M	tecmint.jpeg

Her er den faktiske filstørrelse 6,2 MB, komprimer denne fil nu ved at køre:

$ jpegoptim tecmint.jpeg 

Åbn det komprimerede billede i ethvert billedfremviserprogram, du finder ikke store forskelle. Kilden og de komprimerede billeder har samme kvalitet.

Ovenstående kommando optimerer billederne til den maksimalt mulige størrelse. Du kan dog komprimere det givne billede til en bestemt størrelse til, men det deaktiverer den tabsfri optimering.

Lad os for eksempel komprimere over billedet fra 5.6MB til omkring 250k.

$ jpegoptim --size=250k tecmint.jpeg

Du spørger måske, hvordan du komprimerer billederne i hele biblioteket, det er heller ikke svært. Gå til det bibliotek, hvor du har billederne.

[email  ~ $ cd img/
[email  ~/img $ ls -l
total 65184
-rwxr----- 1 tecmint tecmint 6680532 Jan 19 12:21 DSC_0310.JPG
-rwxr----- 1 tecmint tecmint 6846248 Jan 19 12:21 DSC_0311.JPG
-rwxr----- 1 tecmint tecmint 7174430 Jan 19 12:21 DSC_0312.JPG
-rwxr----- 1 tecmint tecmint 6514309 Jan 19 12:21 DSC_0313.JPG
-rwxr----- 1 tecmint tecmint 6755589 Jan 19 12:21 DSC_0314.JPG
-rwxr----- 1 tecmint tecmint 6789763 Jan 19 12:21 DSC_0315.JPG
-rwxr----- 1 tecmint tecmint 6958387 Jan 19 12:21 DSC_0316.JPG
-rwxr----- 1 tecmint tecmint 6463855 Jan 19 12:21 DSC_0317.JPG
-rwxr----- 1 tecmint tecmint 6614855 Jan 19 12:21 DSC_0318.JPG
-rwxr----- 1 tecmint tecmint 5931738 Jan 19 12:21 DSC_0319.JPG

Og kør derefter følgende kommando for at komprimere alle billeder på én gang.

[email  ~/img $ jpegoptim *.JPG
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 --> 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 --> 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 --> 6536500 bytes (8.89%), optimized.
DSC_0313.JPG 6000x4000 24bit N Exif  [OK] 6514309 --> 5909840 bytes (9.28%), optimized.
DSC_0314.JPG 6000x4000 24bit N Exif  [OK] 6755589 --> 6144165 bytes (9.05%), optimized.
DSC_0315.JPG 6000x4000 24bit N Exif  [OK] 6789763 --> 6090645 bytes (10.30%), optimized.
DSC_0316.JPG 6000x4000 24bit N Exif  [OK] 6958387 --> 6354320 bytes (8.68%), optimized.
DSC_0317.JPG 6000x4000 24bit N Exif  [OK] 6463855 --> 5909298 bytes (8.58%), optimized.
DSC_0318.JPG 6000x4000 24bit N Exif  [OK] 6614855 --> 6016006 bytes (9.05%), optimized.
DSC_0319.JPG 6000x4000 24bit N Exif  [OK] 5931738 --> 5337023 bytes (10.03%), optimized.

Du kan også komprimere flere valgte billeder på én gang:

$ jpegoptim DSC_0310.JPG DSC_0311.JPG DSC_0312.JPG 
DSC_0310.JPG 6000x4000 24bit N Exif  [OK] 6680532 --> 5987094 bytes (10.38%), optimized.
DSC_0311.JPG 6000x4000 24bit N Exif  [OK] 6846248 --> 6167842 bytes (9.91%), optimized.
DSC_0312.JPG 6000x4000 24bit N Exif  [OK] 7174430 --> 6536500 bytes (8.89%), optimized.

For flere detaljer om jpegoptim-værktøjet, se manussiderne.

$ man jpegoptim 

Komprimer eller optimer PNG-billeder fra kommandolinjen

OptiPNG er et kommandolinjeværktøj, der bruges til at optimere og komprimere PNG (bærbare netværksgrafik) filer uden at miste sin oprindelige kvalitet.

Installationen og brugen af OptiPNG ligner meget jpegoptim.

For at installere OptiPNG på dine Linux-systemer skal du køre følgende kommando fra din terminal.

# apt-get install optipng
or
$ sudo apt-get install optipng
# yum install optipng
# dnf install optipng    [On Fedora 22+ versions]

Bemærk: Du skal have epel repository aktiveret på dine RHEL/CentOS-baserede systemer for at installere optipng-programmet.

Den generelle syntaks for optipng er:

$ optipng filename.png
$ optipng [options] filename.png

Lad os komprimere tecmint.png billedet, men inden du optimerer, skal du først kontrollere billedets faktiske størrelse som vist:

[email  ~/img $ ls -lh tecmint.png 
-rw------- 1 tecmint tecmint 350K Jan 19 12:54 tecmint.png

Her er den faktiske filstørrelse på ovenstående billede 350K, komprimer denne fil nu ved at køre:

[email  ~/img $ optipng tecmint.png 
OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: tecmint.png
1493x914 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 bits/pixel, RGB
Input IDAT size = 357525 bytes
Input file size = 358098 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 249211
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 249211

Output IDAT size = 249211 bytes (108314 bytes decrease)
Output file size = 249268 bytes (108830 bytes = 30.39% decrease)

Som du ser i ovenstående output, er størrelsen på tecmint.png-filen reduceret til 30,39%. Bekræft nu filstørrelsen igen ved hjælp af:

[email  ~/img $ ls -lh tecmint.png 
-rw-r--r-- 1 tecmint tecmint 244K Jan 19 12:56 tecmint.png

Åbn det komprimerede billede i ethvert billedfremviserprogram, du finder ikke store forskelle mellem de originale og komprimerede filer. Kilden og de komprimerede billeder har samme kvalitet.

For at komprimere batch- eller flere PNG-billeder på én gang skal du bare gå til den mappe, hvor alle billeder findes, og køre følgende kommando for at komprimere.

[email  ~ $ cd img/
[email  ~/img $ optipng *.png

OptiPNG 0.6.4: Advanced PNG optimizer.
Copyright (C) 2001-2010 Cosmin Truta.

** Processing: Debian-8.png
720x345 pixels, 3x8 bits/pixel, RGB
Input IDAT size = 95151 bytes
Input file size = 95429 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 81388
                               
Selecting parameters:
  zc = 9  zm = 8  zs = 0  f = 0		IDAT size = 81388

Output IDAT size = 81388 bytes (13763 bytes decrease)
Output file size = 81642 bytes (13787 bytes = 14.45% decrease)

** Processing: Fedora-22.png
720x345 pixels, 4x8 bits/pixel, RGB+alpha
Reducing image to 3x8 bits/pixel, RGB
Input IDAT size = 259678 bytes
Input file size = 260053 bytes

Trying:
  zc = 9  zm = 8  zs = 0  f = 5		IDAT size = 222479
  zc = 9  zm = 8  zs = 1  f = 5		IDAT size = 220311
  zc = 1  zm = 8  zs = 2  f = 5		IDAT size = 216744
                               
Selecting parameters:
  zc = 1  zm = 8  zs = 2  f = 5		IDAT size = 216744

Output IDAT size = 216744 bytes (42934 bytes decrease)
Output file size = 217035 bytes (43018 bytes = 16.54% decrease)
....

For flere detaljer om optipng tjek man-sider.

$ man optipng

Konklusion

Hvis du er webmaster og ønsker at vise optimerede billeder over dit websted eller en blog, kan disse værktøjer være meget nyttige. Disse værktøjer sparer ikke kun diskplads, men reducerer også båndbredden under upload af billederne.

Hvis du kender nogen anden bedre måde at opnå det samme på, så lad os det vide via kommentarer og glem ikke at dele denne artikel på dine sociale netværk og støtte os.