Làm thế nào tôi có thể nén hình ảnh?


25

Tôi có 5.000 hình ảnh cần nén (để hiển thị trên trang web của mình).

Tôi mới dùng Ubuntu. Vậy tôi phải làm gì?



@MostafaAhangarha: Không trùng lặp. Vui lòng đọc câu trả lời của tôi Askubfox.com/a/781588/9598 và xem xét lại phiếu bầu của bạn để không đóng câu hỏi này. Đó là một điều tốt. Cảm ơn bạn!
Geppettvs D'Constanzo

Câu trả lời:


21

Tôi sử dụng Trimage siêu đơn giản để sử dụng.

Chỉ thêm hình ảnh và nó nén để cài đặt:

sudo apt-get install trimage

nhập mô tả hình ảnh ở đây


2
Tôi không thấy bất kỳ cài đặt nào mà tôi có thể xác định mức độ nén mà tôi muốn, kích thước tệp, v.v.
Rico

46

Từ "nén" dường như bị hiểu sai trong câu hỏi này, nhưng nó vẫn hợp lệ tùy thuộc vào ngữ cảnh bạn muốn thấy điều này.

Phong cảnh

Chúng ta hãy đối mặt với việc các nhà thiết kế web, nhà phát triển web và / hoặc chủ web cần "nén" các tệp hình ảnh của chúng tôi để làm cho chúng đủ "nhẹ" để nhanh chóng được tải lên máy chủ của chúng tôi nếu chúng tôi làm việc trực tiếp trên môi trường sản xuất thực. Điều đó sẽ không ảnh hưởng nếu chúng ta làm việc trong môi trường sản xuất thử nghiệm tại địa phương.

Nhiều câu trả lời dường như đề cập đến những thứ khác, chủ yếu được gây ra bởi vì - có thể - họ đã không phải đối mặt với khung cảnh như vậy. Đó là lý do tại sao tôi bắt đầu giải thích điều này.

Vì thế. Hãy hiểu câu trả lời cần giải quyết là gì:

  1. Hình ảnh PHẢI nhẹ
  2. Hình ảnh PHẢI được "nén" để giảm kích thước tệp nhưng không bị "đánh giá lại" như được giới thiệu bởi một người dùng khác đã chỉ ra một bản sao trong câu hỏi này nén và đổi tên hàng loạt JPG (find -exec, xargs, piping?)
  3. Các hình ảnh nên được nén hàng loạt, tốt nhất là thông qua GUI.

Hình ảnh nhẹ

Trước tiên hãy hiểu "bức tranh nhẹ" nên là gì.

Hình ảnh độ nét cao, với độ phân giải trên 1024px có thể có kích thước tệp lớn. Tôi cung cấp một ví dụ trên ảnh chụp màn hình này:

nhập mô tả hình ảnh ở đây

nhập mô tả hình ảnh ở đây

Trong cửa sổ thuộc tính tệp, chúng ta có thể thấy đây là tệp 9,5 MB, sẽ trì hoãn rất nhiều để tải lên và sẽ trì hoãn rất nhiều để hiển thị trên màn hình khi được xuất bản trên trang web.

Tuy nhiên, kích thước hình ảnh và độ phân giải lưới thực sự hữu ích cho in ấn độ nét cao. Vì vậy, đó là một khung cảnh khác nhau mà tôi sẽ không bao gồm trong lời giải thích này.

Vì vậy, làm thế nào tôi có thể sử dụng hình ảnh này trong một trang web, mà không phải chờ đợi hàng năm để tải lên và chờ đợi một số năm khác để hiển thị nó trong trang web của tôi?

Các tập tin nên được nén.

Và khi chúng ta nói về "nén", chúng ta rõ ràng cần phải thay đổi chất lượng của nó để làm cho nó có thể sử dụng được cho trường hợp chúng ta đang phải đối mặt.

Vì vậy, hãy thả cái tiếp theo trong một thiết bị đầu cuối:

convert seminario-tabloide.png test.jpg

Điều này sẽ chuyển đổi định dạng PNG độ nét cao thành định dạng JPG "nén", bản thân nó là một tệp nhỏ hơn! Nó đi từ 9,5 MB đến 2,4 MB.

nhập mô tả hình ảnh ở đây

Chưa lớn?

Nhưng, 2,4 MB vẫn là một kích thước tệp lớn. Bây giờ chúng ta hãy chơi với một số lệnh chuyển đổi ImageMagick khác để tạo kích thước tệp nhỏ hơn:

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

Đây là những gì chúng ta cần làm để "nén" một hình ảnh. Điều này sẽ làm giảm 50% chất lượng hình ảnh và cung cấp kích thước tệp 938,4 KB <=== (Lưu ý: KILOBYTES, thậm chí không phải là Megabyte).

Chúng ta có thể đi xa hơn và tạo kích thước tệp nhỏ hơn bằng cách điều chỉnh tỷ lệ phần trăm trong cùng một lệnh thông qua:

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

Xin lưu ý rằng trong ví dụ này, chúng tôi sẽ giảm chất lượng của tệp chứ không phải kích thước hình ảnh. Điều này sẽ dẫn đến một tệp nén mà nó không bị ảnh hưởng trực quan khi hiển thị trên màn hình, nhưng bạn sẽ thấy các tạo tác khi in ở khổ giấy lớn (lớn hơn chữ).

Thay đổi kích thước + Nén = Siêu mát!

Hiện nay. Chúng ta có thể làm một điều khác biệt. Một vài điều thực sự: Trước tiên chúng ta có thể thay đổi kích thước hình ảnh và áp dụng nén sau đó, điều này sẽ dẫn đến kích thước tệp nhỏ hơn bản gốc và sẽ cung cấp hình ảnh hữu ích để hiển thị trên màn hình, không tốt cho việc in nhưng có vẻ như chúng ta cần phải hiển thị nó trên màn hình và không phải trong một biểu ngữ in, phải không?

Vì vậy, hãy làm điều này:

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

Với hướng dẫn này, chúng tôi đang yêu cầu thay đổi kích thước hình ảnh thành 1024 pixel theo bất kỳ số lượng pixel cần thiết nào để không làm mất tỷ lệ khung hình.

Bây giờ ... đoán xem?

Kích thước tệp giảm từ 9,5 MB xuống ... (vui lòng nghe nhạc bằng congas) 433,7 KILOBYTES

Nếu chúng tôi muốn nén tối đa một tệp nén tối đa như thế này, chúng tôi sẽ phải đối mặt với một số dữ liệu trên đầu được chèn vào tệp và nó sẽ dẫn đến kích thước tệp lớn hơn. Vì vậy, tôi sẽ không đề nghị bạn thử nhưng nếu bạn đang mong đợi tôi làm ví dụ, ok ... chúng ta đi thôi!

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

Và chúng tôi đã chuyển từ 433,7 KB sang 176,2 KB trong một lệnh. Ví dụ này đã thành công, tuy nhiên đừng mong đợi bất kỳ bài tập nào dẫn đến kích thước tệp nhỏ hơn. Nhưng bạn có thể có rất nhiều niềm vui khi chạy loại bài tập này.

Quá trình thực thi

Oh! Nhưng tôi gần như quên một trong những nhu cầu: Áp dụng quy trình này cho nhiều hình ảnh một cách dễ dàng.

Đối với điều đó chúng ta có thể làm điều đó với hai quá trình.

Thiết bị đầu cuối

Điều này là nhanh hơn, và dễ dàng hơn. Vì vậy, hãy nói với thiết bị đầu cuối chúng ta cần chạy cùng một hướng dẫn trong tất cả các tệp trong một thư mục, sau đó tôi sẽ giải thích hướng dẫn khác.

Chuyển đổi tất cả thành 1024px (bạn có thể sử dụng bất kỳ lượng pixel nào)

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

Ở đây chúng tôi yêu cầu lệnh chạy cùng một hướng dẫn cho tất cả các tệp trong một thư mục, áp dụng phép chuyển đổi và thả một bản sao có tên khác để dễ dàng chọn.

Giảm chất lượng theo tỷ lệ phần trăm (sử dụng bất kỳ tỷ lệ phần trăm nào bạn muốn) cho tất cả các hình ảnh trong một thư mục:

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

Ở đây chúng tôi đang yêu cầu giảm hình ảnh đã thay đổi chất lượng để làm cho kích thước tệp của nó nhỏ hơn.

Bạn có thể chơi với các lệnh này và xem kết quả của bạn. Sau một vài giờ vui chơi, bạn sẽ trở thành một chuyên gia.

Tập lệnh Nautilus

Vào ngày 20 tháng 4 năm 2015 tôi đã phải đối mặt với tình huống như câu hỏi ban đầu, vì vậy tôi đã phải thực hiện một số nghiên cứu và yêu cầu giúp đỡ về một câu hỏi. Đó là lý do tại sao bây giờ tôi biết rất nhiều về điều này. Đừng nghĩ rằng tôi sinh ra với kiến ​​thức này, anh bạn.

Nếu bạn chưa quen với thiết bị đầu cuối và / hoặc muốn sử dụng GUI để chỉ cần chọn các nhóm tệp của mình và áp dụng các biến đổi, bạn có thể tạo Tập lệnh hành động Nautilus của riêng mình để chỉ cần nhấp chuột phải vào nhóm tệp và chọn một tùy chọn từ menu ngữ cảnh.

Để được hướng dẫn về cách thực hiện điều đó, vui lòng đọc cả câu hỏi, câu trả lời và nhận xét tại đây: Làm cách nào để xử lý hàng loạt hình ảnh JPG để thay đổi chất lượng của nó với Nautilus-Action?

Chúc may mắn!


1
Đây là câu trả lời "dạy tôi câu cá". convertKỹ năng dòng lệnh ImageMagick là tuyệt vời để có.
Charney Kaye

Chất rắn! Tôi đã sử dụng trình soạn thảo văn bản Sublime Text ở chế độ nhiều con trỏ để nhanh chóng thay đổi một loạt các lệnh cùng lúc để nén "hàng loạt" một loạt ảnh. Tôi chỉ sử dụng convert photo.jpg -quality 70% photo_compressed.jpgđịnh dạng lệnh và nó hoạt động rất tốt! Ngay cả việc cài đặt nén chỉ còn 70% chất lượng ban đầu đã giảm kích thước ảnh xuống ~ 37% so với ảnh gốc, vì hiệu ứng được phóng to bằng cách nằm trên cả hai trục x và y.
Gabriel Staples

Giải thích tuyệt vời của các khái niệm thường bị hiểu lầm. Để hoàn thiện, hãy để tôi thêm rằng để xử lý hàng loạt, bạn cũng có thể sử dụng tính không chính xác của ImageMagick thay vì chuyển đổi trong đó tôi tạo một thư mục để giữ kết quả sau đó chỉ cần xử lý vào thư mục đó để giữ mọi thứ được sắp xếp. Ví dụmogrify -resize 1600 -path dir_name -format JPG -quality 90 *.tif
Dennis

0

Nếu bạn đang đề cập đến hình ảnh jpeg, việc nén trên thực tế là không thể. Bởi vì định nghĩa jpeg là định dạng tệp nén (tất cả các pixel nhiễu và vô dụng đã bị xóa). Bạn có thể nén chúng ổn, nhưng tổng kích thước sẽ vẫn như cũ. Thuật toán nén nâng cao duy nhất tôi biết cho jpeg là zipx. Nhưng zipx là độc quyền của Winzip và đảm bảo tối đa. kích thước cắt giảm 30% (trong chế độ lưu trữ zipx).

Để hiển thị hình ảnh của bạn trên web, trước tiên, bạn nên thay đổi kích thước của chúng (dưới 1 MB cho mỗi cái) và tùy ý chuyển đổi chúng sang định dạng tệp png. PNG (= đồ họa mạng di động) được tối ưu hóa đặc biệt để truyền web nhanh hơn và hiển thị nhanh hơn. Người dùng nâng cao thậm chí có thể chuyển đổi những hình ảnh đó sang định dạng webp (định dạng của Google cho hình ảnh, thuật toán tải nhanh nhất).

Bạn có thể chuyển đổi hàng loạt hình ảnh với XnConvert, sau đó thay đổi kích thước hàng loạt hình ảnh của bạn bằng XnView. Tải xuống gói gỡ lỗi từ đây: http://www.xnview.com/de/xnviewmp/#doads , sau đó nhấp chuột phải vào gói đó và mở nó bằng Phần mềm Gnome.

Nếu bạn không quan tâm đến tốc độ tải mạng, nhưng quan tâm đến chất lượng, bạn nên giữ hình ảnh của mình không bị ảnh hưởng và tạo một thư viện kỹ thuật số cho chúng. Có thể tải chúng lên một máy chủ công cộng (Yahoo, Google, v.v.).


3
Bạn có thể muốn đề cập đến các tùy chọn khác nhau để nén / chất lượng jpeg; hoàn toàn có thể giảm kích thước tệp của hình ảnh jpeg bằng cách tăng độ nén của nó (và do đó làm giảm chất lượng của nó).
Nick Weinberg

1
Sự hiểu biết của tôi về nén có nghĩa là loại bỏ các pixel không cần thiết trong khi vẫn duy trì chất lượng như cũ. Giảm chất lượng không phải là nén mà chỉ thu nhỏ hoặc giảm mẫu. Có thể nén không mất dữ liệu bằng cách sử dụng định dạng zipx hoạt động tuyệt vời với ảnh chụp liên tục. Nó tạo ra một số loại ảnh tương tự bị chồng chéo / quá mức trong đó tất cả các pixel kép được làm phẳng trên một lớp riêng biệt, tương tự như tệp .css trong trang web. Lặp lại pixel được định nghĩa là một thực thể riêng biệt trong kho lưu trữ.
ipse lute
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.