Bagaimana saya bisa mengompres gambar?

25

Saya memiliki 5.000 gambar yang perlu saya kompres (untuk ditampilkan di situs web saya).

Saya baru di Ubuntu. Jadi apa yang saya lakukan?

pengguna2950593
sumber
2
Kemungkinan duplikat kompresi batch JPG & rename (temukan -exec, xargs, piping?)
Mostafa Ahangarha
@MostafaAhangarha: Bukan duplikat. Harap baca jawaban saya askubuntu.com/a/781588/9598 dan pertimbangkan kembali suara Anda agar tidak menutup pertanyaan ini. Itu bagus. Terima kasih!
Geppettvs D'Constanzo

Jawaban:

21

Saya menggunakan Trimage super mudah digunakan.

hanya menambahkan gambar dan kompres untuk menginstal:

sudo apt-get install trimage

masukkan deskripsi gambar di sini

Mohamed Slama
sumber
2
Saya tidak melihat pengaturan apa pun yang dapat saya gunakan untuk menentukan seberapa dikompresnya, ukuran file, dll.
Rico
46

Kata "kompresi" tampaknya disalahtafsirkan dalam pertanyaan ini, tetapi belum valid tergantung pada konteks yang Anda inginkan.

Pemandangannya

Mari kita hadapi bahwa desainer Web, pengembang Web dan / atau master Web perlu "memampatkan" file gambar kami agar cukup "ringan" untuk diunggah dengan cepat ke hosting kami jika kami bekerja langsung di lingkungan produksi nyata. Itu tidak akan berpengaruh jika kita bekerja di lingkungan produksi pengujian lokal.

Banyak jawaban tampaknya merujuk pada hal-hal lain, sebagian besar disebabkan karena -mungkin- mereka belum menghadapi pemandangan seperti itu. Itu sebabnya saya mulai menjelaskan ini.

Begitu. Mari kita pahami apa yang perlu dipecahkan jawabannya:

  1. Gambar HARUS ringan
  2. Gambar HARUS "dikompresi" untuk kehilangan ukuran file tetapi tidak "di-rezised" seperti yang dirujuk oleh pengguna lain yang menunjuk pada duplikat pada pertanyaan ini kompresi batch JPG & rename (temukan -exec, xargs, piping?)
  3. Gambar-gambar harus dikompresi secara batch, lebih disukai melalui GUI.

Gambar Ringan

Pertama-tama mari kita memahami apa yang seharusnya menjadi "gambar ringan".

Gambar Definisi Tinggi, dengan resolusi lebih dari 1024px mungkin memiliki ukuran file besar. Saya memberikan contoh pada tangkapan layar ini:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

Di jendela properti file kita bisa melihat ini adalah file 9,5 MB, yang akan menunda banyak untuk mengunggah dan akan menunda banyak untuk membuat di layar ketika dipublikasikan di situs web.

Namun demikian, ukuran gambar dan resolusi grid sangat berguna untuk pencetakan definisi tinggi. Jadi itu pemandangan berbeda yang tidak akan saya bahas dalam penjelasan ini.

Jadi, bagaimana saya bisa menggunakan gambar ini di situs web, tanpa menunggu bertahun-tahun untuk mengunggah dan menunggu beberapa tahun lain untuk menampilkannya di situs web saya?

File harus dikompres.

Dan ketika kita berbicara tentang "kompresi" kita secara eksplisit perlu mengubah kualitasnya agar dapat digunakan untuk kasus yang kita hadapi.

Jadi, mari kita letakkan yang berikutnya di terminal:

convert seminario-tabloide.png test.jpg

Ini akan mengubah format PNG definisi tinggi menjadi format JPG "terkompresi", yang dengan sendirinya adalah file yang lebih kecil! Mulai dari 9,5 MB menjadi 2,4 MB.

masukkan deskripsi gambar di sini

Belum Besar?

Tapi, 2,4 MB belum menjadi ukuran file besar. Sekarang mari kita bermain dengan beberapa perintah konversi ImageMagick lain untuk membuat ukuran file yang lebih kecil:

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

Inilah yang perlu kita lakukan untuk "memampatkan" gambar. Ini akan mengurangi kualitas gambar sebesar 50% dan menghasilkan 938,4 KB <=== (Catatan: KILOBYTES, bahkan Megabita) ukuran file.

Kita dapat melangkah lebih jauh dan membuat ukuran file yang lebih kecil dengan menyesuaikan persentase dalam perintah yang sama melalui:

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

Harap diingat bahwa dalam contoh ini kami mengurangi kualitas file, bukan dimensi gambar. Yang akan menghasilkan file terkompresi yang tidak terpengaruh secara visual saat ditampilkan di layar, tetapi Anda akan melihat artefak saat mencetak dalam ukuran kertas besar (lebih besar dari huruf).

Mengubah ukuran + Mengompresi = Sangat Keren!

Sekarang. Kita dapat melakukan hal yang berbeda. Beberapa hal memang: Kita pertama-tama dapat mengubah ukuran gambar dan menerapkan kompresi setelah itu, yang akan menghasilkan ukuran file lebih kecil dari aslinya, dan akan memberikan gambar yang berguna untuk rendering di layar, tidak begitu baik untuk dicetak tetapi sepertinya kita perlu menampilkannya di layar dan tidak di spanduk dicetak, kan?

Jadi mari kita lakukan ini:

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

Dengan instruksi ini, kami meminta ukuran gambar diubah menjadi 1024 piksel dengan jumlah piksel yang dibutuhkan agar tidak kehilangan rasio aspek.

Sekarang ... coba tebak?

Ukuran file berkurang dari 9,5 MB menjadi ... (harap tunda musik dengan congas) 433.7 KILOBYTES

Jika kami ingin kompres maksimum file terkompresi maksimum seperti ini, kami akan menghadapi beberapa data overhead yang dimasukkan dalam file dan itu akan menghasilkan ukuran file yang lebih besar. Jadi saya tidak akan menyarankan Anda untuk mencoba tetapi jika Anda mengharapkan saya untuk melakukan contoh, ok ... Ini dia!

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

Dan kami beralih dari 433,7 KB menjadi 176,2 KB dalam satu perintah. Contoh ini berhasil, namun jangan berharap ada latihan yang menghasilkan ukuran file yang lebih kecil. Tetapi Anda bisa bersenang-senang saat menjalankan latihan semacam ini.

Proses batch

Oh! Tapi saya hampir lupa salah satu kebutuhan: Untuk menerapkan proses ini ke banyak gambar dengan mudah.

Untuk hal seperti itu kita dapat melakukannya dengan dua proses.

Terminal

Ini lebih cepat, dan lebih mudah. Jadi mari kita beri tahu terminal kita perlu menjalankan instruksi yang sama di semua file dalam direktori, setelah itu saya akan menjelaskan instruksi lain.

Konversi semua ke 1024px (Anda dapat menggunakan jumlah piksel apa pun)

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

Di sini kami meminta perintah untuk menjalankan instruksi yang sama untuk semua file dalam direktori, menerapkan transformasi dan menjatuhkan salinan dengan nama yang berbeda untuk membuatnya mudah untuk dipilih.

Kurangi kualitas dengan persentase (gunakan persentase yang Anda inginkan) untuk semua gambar dalam direktori:

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

Di sini kami meminta gambar yang sudah diubah ukurannya dikurangi kualitasnya agar ukuran filenya lebih kecil.

Anda dapat bermain dengan perintah ini dan melihat hasil Anda. Setelah beberapa jam bersenang-senang, Anda akan menjadi ahli.

Script Nautilus

Pada 20 April 2015 saya menghadapi situasi seperti pertanyaan awal, jadi saya harus melakukan riset dan meminta bantuan pada pertanyaan. Itu sebabnya sekarang saya tahu banyak tentang ini. Jangan mengira aku dilahirkan dengan pengetahuan ini, kawan.

Jika Anda tidak terbiasa dengan terminal dan / atau ingin menggunakan GUI untuk hanya memilih grup file Anda dan menerapkan transformasi, Anda dapat membuat Script Tindakan Nautilus Anda sendiri untuk cukup klik kanan grup file dan pilih opsi dari menu konteks.

Untuk instruksi tentang bagaimana melakukan hal seperti itu silakan baca pertanyaan, jawab dan komentar di sini: Bagaimana cara batch memproses gambar JPG untuk mengubah kualitasnya dengan Nautilus-Actions?

Semoga berhasil!

Geppettvs D'Constanzo
sumber
1
Ini adalah jawaban "ajari aku memancing". convertKeterampilan command-line ImageMagick sangat bagus untuk dimiliki.
Charney Kaye
Padat! Saya menggunakan editor teks Sublime Text dalam mode multi-kursor untuk dengan cepat mengubah banyak perintah sekaligus untuk kompresi "batch" dari banyak foto. Saya hanya menggunakan convert photo.jpg -quality 70% photo_compressed.jpgformat perintah dan itu berhasil! Bahkan mengatur kompresi ke hanya 70% dari kualitas asli mengurangi ukuran foto menjadi ~ 37% dari aslinya, karena efeknya diperbesar dengan berada pada sumbu x dan y.
Gabriel Staples
Penjelasan luar biasa tentang konsep yang sering disalahpahami. Untuk kelengkapan, izinkan saya menambahkan bahwa untuk pemrosesan batch Anda juga dapat menggunakan mogrify ImageMagick daripada mengkonversi di mana saya membuat folder untuk menyimpan hasilnya kemudian hanya memproses ke folder itu yang juga membuat semuanya teratur. Misalnyamogrify -resize 1600 -path dir_name -format JPG -quality 90 *.tif
Dennis
0

Jika Anda merujuk ke gambar jpeg, kompresi de facto tidak dimungkinkan. Karena jpeg secara definisi merupakan format file terkompresi (semua noise dan piksel tidak berguna sudah dihapus). Anda dapat melakukannya dengan baik, tetapi ukuran totalnya akan tetap sama. Satu-satunya algoritma kompresi canggih yang saya tahu untuk jpeg adalah zipx. Tapi zipx adalah hak milik Winzip dan memastikan maks. ukuran dipotong 30% (dalam mode arsip zipx).

Untuk menampilkan gambar Anda di web, pertama-tama Anda harus mengubah ukurannya (di bawah 1 MB per masing-masing) dan secara opsional mengubahnya menjadi format file png. PNG (= grafik jaringan portabel) dioptimalkan secara khusus untuk transfer web yang lebih cepat dan tampilan yang lebih cepat. Pengguna mahir bahkan dapat mengkonversi gambar-gambar itu ke format webp (format Google untuk gambar, algoritma pemuatan tercepat).

Anda dapat mengonversi gambar secara batch dengan XnConvert, lalu mengubah ukuran gambar Anda dengan XnView. Unduh paket deb dari sini: http://www.xnview.com/de/xnviewmp/#downloads , lalu klik kanan padanya dan buka dengan Gnome Software.

Jika Anda tidak peduli dengan kecepatan memuat jaringan, tetapi peduli kualitas, Anda harus menjaga gambar Anda tidak tersentuh dan membuat perpustakaan digital untuk mereka. Mungkin mengunggahnya ke server publik (Yahoo, Google, dll).

lute ipse
sumber
3
Anda mungkin ingin menyebutkan berbagai opsi untuk kompresi / kualitas jpeg; sangat mungkin untuk mengurangi ukuran file gambar jpeg dengan meningkatkan kompresinya (dan karenanya mengurangi kualitasnya).
Nick Weinberg
1
Pemahaman saya tentang kompresi berarti menghilangkan piksel yang tidak perlu dengan tetap mempertahankan kualitas yang sama. Mengurangi kualitas bukan kompresi, itu hanya perampingan atau down-sampling. Kompresi lossless dimungkinkan dengan menggunakan format zipx yang bekerja sangat baik dengan foto burst. Ini menciptakan semacam tumpukan overimposed / overstacked dari foto serupa di mana semua piksel ganda diratakan pada lapisan yang terpisah, sesuatu yang mirip dengan file .css di halaman web. Pixel berulang didefinisikan sebagai entitas terpisah dalam arsip.
ipse lute