Δεν είναι λίγες οι φορές, που χρειάζεται να ανεβάσεις μια εικόνα η να την στείλεις κάπου και ψάχνεσαι για ώρες να βρεις τρόπο να μειώσεις το μέγεθος μιας εικόνας στο Linux. Μην ψάχνεσαι, απλά άνοιξε το τερματικό.

Έχοντας δοκιμάσει αρκετά προγράμματα (είτε online είτε τοπικά) για να κάνω συμπίεση εικόνων και φωτογραφιών, εντούτοις κανένα δεν μου πρόσφερε την καλύτερη, ταχύτερη και ευέλικτη λύση όσο τρεις μικρές εφαρμογές τερματικού.

metatropi-smikrinsi-simpiesh-eikonas

Γιατί να συμπιέσω την εικόνα;

Υπάρχουν διάφοροι λόγοι για την συμπίεση εικόνων. Πρώτα από όλα δεν έχει νόημα να στείλεις σε κάποιον 15 φωτογραφίες (π.χ. από γενέθλια) μέσω email απλά για να τα δει ο παραλήπτης (και πιθανόν να τα διαγράψει. Σαν καλά παιδιά που είστε προφανώς, δεν θέλετε να φάτε τα MB του παραλήπτη (εκτός και αν θέλετε…). Επίσης δεν έχει νόημα να ανεβάζεται εικόνες ή φωτογραφίες μεγέθους 7MB π.χ. σε ένα eshop που διατηρείτε όταν απλά θα είναι για δημόσια προβολή κάποιου προϊόντος. Τέλος, αν γράφετε π.χ. ένα κείμενο σε Libre Office και προσθέτετε μια δυο εικόνες στο κείμενο ανά μια σελίδα, και είναι πολλών σελίδων το αρχείο, τότε το τελικό μέγεθος του θα είναι απαγορευτικό για διαμοιρασμό.

Φυσικά όπως είπα, υπάρχουν εφαρμογές που τα κάνουν αυτά με πολύ εύκολο και αυτόματο τρόπο (π.χ. plugin) οι οποίες άλλες φορές είναι ικανοποιητικές ενώ άλλες φορές είναι «δύστροπες». Κανένα δεν είναι ευέλικτο π.χ. για τροποποίηση η δημιουργία script που θα κάνει όλες η μερικές διεργασίες (μετατροπή από png σε jpg, αλλαγή ανάλυσης κλπ) σε μια αλληλουχία εικόνων ή και μαζικά.

Προγράμματα τερματικού για συμπίεση εικόνων

Τα προγράμματα που θα χρειαστούμε είναι:

  • convert, για μετατροπή εικόνα απο μια μορφή σε άλλη
  • mogrify, για αλλαγή διαστάσεων εικόνας
  • optipng – jpegoptim, συμπίεση και μείωση μεγέθους εικόνων png και jpg αντίστοιχα

Ανάλογα με την διανομή σας, θα χρειαστεί απλά να κάνετε αναζήτηση τα παραπάνω ονόματα των εφαρμογών στον διαχειριστή πακέτων της εκάστοτε διανομής. Σε κάποιες διανομές, μπορεί μερικά από τα παραπάνω να συμπεριλαμβάνονται σε ένα πρόγραμμα, οπότε εγκαθιστώντας το ένα να βάλει και το άλλο. Ενώ σε άλλες περιπτώσεις μπορεί να έχουν διαφορετικό η παραπλήσιο όνομα. Αν δεν το βρίσκετε, απλά ρωτήστε στα σχόλια και θα το δούμε μαζί.

Μετατροπή εικόνας από png σε jpg

Ας πούμε ότι έχουμε την εικόνα thamnos.png και θέλουμε να το μετατρέψουμε σε jpg μορφή. Τότε δίνουμε:

convert thamnos.png thamnos.jpg

Η παραπάνω εντολή θα δημιουργήσει ένα αντίγραφο του thamnos αλλά σε μορφή (format) jpg. Θα δείτε φυσικά ότι το ​convert δεν διαγράφει την αρχική εικόνα ​thamnos.png

metatropi-png-jpg
Με την μετατροπή μειώσαμε από 1,3 MB σε 306KB

Μετά την μετατροπή δείτε το μέγεθος της εικόνας σε MB. Λογικά θα δείτε ότι έχει μειώσει αισθητά το μέγεθος της εικόνας (υπάρχουν φυσικά εξαιρέσεις που το png είναι πιο μικρό σε μέγεθος)

Μαζική αλλαγή μεγέθους φωτογραφιών

Ας πούμε λοιπόν ότι έχετε ένα φάκελο με εικόνες JPG (ας πούμε 50 φωτογραφίες) οι οποίες τραβήχτηκαν με ένα κινητό το οποίο διαθέτει κάμερα αρκετών Megapixel και θέλετε να αλλάξετε το μέγεθός τους από 5000p σε 1000p διότι απλά θέλετε να τα στείλετε προσωρινά τις φωτογραφίες μέσω email σε κάποιον.

Πάτε λοιπόν στον φάκελο μέσω τερματικού και δίνετε :

mogrify -resize 1000 *.jpg

 

smikrinsi-eikonas
Με την σμίκρυνση της εικόνας μειώσαμε το μέγεθος απο 306KB σε 76KB

To αστεράκι λοιπόν θα πάρει όλα τα αρχεία που βρίσκονται μέσα στον φάκελο και έχουν κατάληξη .jpg οπότε καλό θα είναι κάνετε αντίγραφα των εικόνων σε κάποιο άλλο φάκελο για να τα έχετε στη original κατάσταση.

Συμπίεση εικόνων jpg

Ας πούμε τώρα, ότι θέλετε ακόμα περισσότερο να μειώσετε το μέγεθος των φωτογραφιών, χωρίς όμως να αλλάξετε το μέγεθος, αλλά απο την άλλη θέλετε να μειώστε και τα MB που καταναλώνει.

Όπως είστε λοιπόν στον φάκελο μέσω τερματικού, δίνετε :

jpegoptim -m 85 onoma-eikonas.jpg

 

Φυσικά εσείς μπορεί να θέλετε ακόμα περισσότερη συμπίεση οπότε έχετε στο νου σας ότι όσο μικρότερο -m αριθμός τόσο μεγαλύτερη συμπίεση γίνεται.

simpiesi-eikonas
Με την συμπίεση εικόνας μειώσαμε το μέγεθος από 76ΚΒ σε 41KB

Το παραπάνω μπορεί να χρησιμοποιηθεί και με αστεράκι * αλλά πολλές φορές οι φωτογραφίες διαθέτουν διαφορετική σύνθεση πληροφοριών οπότε αν γίνει μαζικά μπορεί το αποτέλεσμα να μην είναι το ιδανικό. Οπότε προτιμούμε να το κάνουμε ένα ένα τα αρχεία εικόνων.

Συμπίεση εικόνων png

Αν δεν έχετε μετατρέψει τις εικόνες png σε jpg τότε αντιστοίχως μπορείτε να συμπιέσετε μια εικόνα png με

optipng *.png

Επίλογος

Με τις παραπάνω εντολές, καταφέραμε από 1.3 MB η εικόνα να την φτάσουμε στα 41ΚΒ χωρίς να χάσουμε υπερβολικά σε ποιότητα διότι όπως και να έχει, οι εικόνες προορίζονταν για προβολή σε κινητό. Φυσικά το δικό σας σενάριο μπορεί να διαφέρει οπότε μπορεί να χρειαστείτε άλλες παραμέτρους.

Όλες οι παραπάνω εφαρμογές διαθέτουν εκτενέστατα manual (δίνετε man όνομα-εφαρμογής) και μπορείτε να δείτε τις παραμέτρους αλλά και να πειραματιστείτε με διαφορετικές τιμές και συμπιέσεις.

Μετά από λίγο πειραματισμό, θα σας βγαίνει αυτόματα η χρήση τους για μετατροπή, σμίκρυνση και συμπίεση εικόνων.