ImageMagick – Giảm kích thước tệp

Imagemagick Giam Kich Thuoc Tep



Một bức tranh đẹp và lớn gần như tuyệt vời; nó thường đi kèm với chất lượng tuyệt vời. Tuy nhiên, có rất nhiều lần bạn không đủ khả năng để có những bức ảnh có kích thước quá lớn. Đôi khi, tất cả những gì bạn muốn là một bức ảnh có kích thước phù hợp hoặc thậm chí là một bức ảnh nhỏ hơn một kích thước nhất định. Trong những trường hợp như vậy, tất cả những gì lập trình viên mong muốn là một cách để tìm ra điểm trung gian giữa chất lượng và kích thước. Về mặt lý thuyết, nếu bạn hoàn toàn từ bỏ chất lượng, thì kích thước tệp không phải là vấn đề, nhưng vấn đề thực sự là tìm ra sự thỏa hiệp giữa chất lượng và kích thước tệp. Trong hướng dẫn này, chúng ta sẽ thảo luận về các cách giảm kích thước tệp ảnh bằng ImageMagick (mà không ảnh hưởng quá nhiều đến chất lượng).

Cài đặt ImageMagick

Chúng tôi sẽ cần ImageMagick cho việc này, vì vậy trước tiên, hãy cài đặt nó:







sudo cài đặt apt-get ảo thuật hình ảnh



Công tắc chất lượng

Cách đầu tiên và dễ dàng nhất để giảm kích thước ảnh/ảnh/video là giảm chất lượng của ảnh. Công tắc chất lượng biểu thị mức nén JPEG/MIFF/PNG. Đối với JPEG và MPEG, chất lượng 1 biểu thị mức nén cao nhất và chất lượng hình ảnh thấp nhất, trong khi 100 biểu thị mức nén thấp nhất và chất lượng tốt nhất.



Vì vậy, hãy xem một ví dụ; bức ảnh tôi chụp một cái cây có độ phân giải là 4624×3468 và là 5,70226MiB. Đây là hình ảnh gốc, một JPEG, cụ thể.






Bây giờ, vấn đề là chúng ta muốn giảm kích thước của hình ảnh. Vì vậy, hãy thử đặt cài đặt công tắc chất lượng thành một thứ gì đó hơi khác một chút và xem điều gì sẽ xảy ra.

chuyển đổi tree_4624x3468.jpg -phẩm chất 75 tree_4624x3468_quality75.jpg
chuyển đổi tree_4624x3468.jpg -phẩm chất 25 tree_4624x3468_quality25.jpg



Tôi đã giảm chất lượng xuống 75 cho một bức ảnh và 25 cho bức ảnh khác. Hình ảnh ban đầu là 5,70226MiB, nhưng hình ảnh có chất lượng 75 trở thành 2,74664MiB trong khi hình ảnh có chất lượng 25 trở thành 1358250 (1,295MiB). Ở đây, cá nhân tôi chọn chất lượng 75%.



Bây giờ, vì chúng tôi cũng quan tâm đến chất lượng thực tế của ảnh, hãy để tôi cho bạn xem ảnh:


tree_4624x3468_quality75.jpg


tree_4624x3468_quality25.jpg

Như bạn có thể thấy, chất lượng không bị ảnh hưởng quá nhiều nhưng kích thước tệp nhỏ hơn.

Bây giờ, tôi đã thử làm điều tương tự với PNG và đây là những gì tôi nhận được:


Vì vậy, nó đã tăng từ 23501600B (22,413MiB) lên 22,2854MiB. Đối với JPEG, nó tăng từ 5,70226MiB lên 1,295MiB. Đối với các định dạng không mất dữ liệu như PNG, việc chuyển đổi chất lượng khó hơn rất nhiều.

Thay đổi kích thước ảnh

Thay đổi kích thước hình ảnh là một cách khác. Ví dụ:

chuyển đổi tree_4624x3468.jpg -thay đổi kích thước năm mươi % x50 % tree_4624x3468_resize50 % .jpg



Như bạn có thể thấy rõ, hình ảnh 4624×3468 là 5,70226MiB, trong khi hình ảnh 2312×1734 chỉ là 1,56287MiB.

Công tắc xác định

Công tắc xác định được theo sau bởi một khóa và giá trị đã cho của nó.

-xác định khóa{=value}…

Danh sách các giá trị khóa có thể có tại .

Đối với PNG, bạn có thể sử dụng png:compression-level=value. Giá trị có thể là bất kỳ giá trị nào từ 0 đến 9. Giá trị 0 sẽ cung cấp cho bạn khả năng nén ít nhất nhưng tốc độ nén nhanh và giá trị 9 sẽ cung cấp cho bạn khả năng nén tốt nhất nhưng chậm nhất. Bất cứ điều gì ở giữa cũng đi.

Ví dụ:

chuyển đổi tree_4624x3468.png -định nghĩa png:cấp độ nén = 9 tree_4624x3468_compression9.png



Trong hầu hết các trường hợp, điều mà lập trình viên muốn là đặt kích thước tối đa cho ảnh. Vì vậy, giả sử bạn muốn đặt kích thước tối đa cho ảnh. Bạn có thể sử dụng công tắc xác định để làm điều này.

-define jpeg:extent={size}

chuyển đổi  tree_4624x3468.jpg -định nghĩa jpeg: mức độ =1MB tree_4624x3468_extent1MB.jpg



Như bạn có thể thấy trong hình trên, nó đặt nó ở độ phân giải 4624 × 3468 và kích thước 0,897MiB. Vì vậy, như bạn yêu cầu, ImageMagick đã tạo một bức ảnh nhỏ hơn kích thước tối đa là 1MB.

Công tắc dải

Hình ảnh chúng tôi chụp bằng máy ảnh đi kèm với Siêu dữ liệu. Việc xóa Siêu dữ liệu cũng có thể giải phóng một số dung lượng. Trong ImageMagick, chúng tôi thực hiện việc này bằng công tắc dải.

chuyển đổi tree_4624x3468.jpg -dải tree_strip.jpg



Ở đây, như bạn có thể thấy, ảnh gốc có kích thước 4624×3468 và 5,7MiB. Nhưng hình ảnh đã bị tước Siêu dữ liệu là 4,65MiB.

Chuyển đổi không gian màu

Bạn cũng có thể thử chuyển đổi không gian màu. Trong trường hợp đầu tiên này, tôi sẽ biến nó thành màu xám.

chuyển đổi tree_4624x3468.jpg -không gian màu cây xám_gray.jpg -phẩm chất 75



Như bạn có thể thấy, việc giảm kích thước hình ảnh không quá lớn, nhưng có sự giảm – từ 5,70226MiB xuống 4,44997MiB.

Ngoài ra, tôi cũng đã thử như sau:

chuyển đổi tree_4624x3468.png -không gian màu cây xám_graypng.png



Trong trường hợp PNG, ảnh gốc của tôi, đó là 4624 × 3468, là 22,42MiB, nhưng khi tôi chuyển sang màu xám, nó sẽ trở thành 8,88MiB.

Chuyển đổi màu sắc

Bạn cũng có thể chọn thay đổi số lượng màu được sử dụng. Trong trường hợp cụ thể này, tôi sẽ chỉ sử dụng 16 màu trên PNG.

chuyển đổi tree_4624x3468.png -màu sắc 16 tree_4624x3468_16colors.png



PNG ban đầu là 4624×3468 và 22,42MiB. Tuy nhiên, khi tôi thay đổi màu chỉ còn 16, hình ảnh có kích thước 4,27MiB. Và bức ảnh trông như thế này:


tree_4624x3468_16colors.png

Sử dụng nhiều công tắc

Bây giờ, bạn không cần phải sử dụng một công tắc duy nhất trên ảnh! Bạn có thể kết hợp bao nhiêu công tắc tùy thích trên một bức tranh.

Vì vậy, trong ví dụ 1, tôi sẽ chụp ảnh PNG của một cái cây. Ảnh gốc này có kích thước 4624×3468 và 22,42MiB, tôi sẽ sử dụng nhiều công tắc và xem nó sẽ đưa tôi đến đâu.

chuyển đổi tree_4624x3468.png -dải -thay đổi kích thước 75 % x75 % -định nghĩa png:cấp độ nén = 9 -không gian màu màu xám  tree_4624x3468_reducedsize.png



Vì vậy, PNG này, với kích thước ban đầu là 22,42MiB, đã biến thành một hình ảnh có kích thước 5,3MiB. Hình ảnh kết quả là khoảng 23% kích thước ban đầu.

Vì vậy, tiếp theo, hãy xem một JPG.

chuyển đổi tree_4624x3468.jpg -phẩm chất 75 -thay đổi kích thước 75 % x75 % -dải -màu sắc 16 tree_4624x3468_reducedsize.jpg



Vì vậy, ở đây, đối với JPG, chúng tôi đã chuyển từ kích thước ban đầu là 5,7MiB sang khoảng 2,2MiB cho hình ảnh màu.

Nhưng nếu nó không có màu:

chuyển đổi tree_4624x3468.jpg -phẩm chất 75 -thay đổi kích thước 75 % x75 % -dải -không gian màu cây xám_4624x3468_reducedsize.jpg



Ở đây, chúng tôi đã chuyển từ kích thước ban đầu là 5,7MiB sang 1,6MiB cho hình ảnh màu xám.

Nếu muốn, bạn cũng có thể đặt giới hạn tối đa cho kích thước. Vấn đề là bạn có thể giảm kích thước nếu bạn thực sự tập trung vào nó.

Sự kết luận

Khi viết mã cho một mục đích cụ thể, chúng ta cũng có xu hướng sử dụng hình ảnh và đôi khi, chúng ta không đủ khả năng để có những bức ảnh có kích thước quá lớn. Trong những trường hợp như vậy, trọng tâm chính của lập trình viên là tìm ra sự thỏa hiệp giữa kích thước của hình ảnh và chất lượng của hình ảnh. Chúng tôi không muốn sử dụng những bức ảnh có chất lượng quá thấp, nhưng chúng tôi cũng không đủ khả năng để có những bức ảnh có kích thước lớn. Vì vậy, chúng ta cần các cách để giảm kích thước của hình ảnh. ImageMagick cung cấp nhiều cách khác nhau để giảm kích thước ảnh của bạn dưới dạng các công tắc khác nhau – chất lượng, thay đổi kích thước, xác định, v.v. Bạn có thể sử dụng một hoặc nhiều trong số chúng để điều chỉnh kích thước của ảnh.