2011-08-13 31 views
10

Tôi có một máy ảnh tạo ra các bức ảnh có kích thước 3008x2000 pixel. Tôi sử dụng Image Magick để mở rộng quy mô và thay đổi kích cỡ các bức ảnh được đưa lên trang web của tôi. Kích thước của hình ảnh tôi đang sử dụng trên trang web là 602x400. Tôi sử dụng lệnh này để giảm kích thước:Image Magick: Tối ưu hóa hình ảnh cho các trang web

convert DSC_0124.JPG -scale 20% -size 24% img1.jpg 

Kích thước ảnh này có kích thước 602x400 pixel. Nhưng kích thước tệp sẽ luôn ở trên 250KB. Thêm hình ảnh trên một trang html duy nhất có nghĩa là trang sẽ nặng hơn và thời gian tải sẽ lâu hơn. Có bất kỳ tính năng nào trong hình ảnh ma thuật sẽ giúp tôi giữ kích thước tệp nhỏ nhất có thể, có thể, dưới 100KB. Nhưng kích thước hình ảnh phải giống nhau, tức là 602x400px. Tôi đã đạt được tối ưu hóa tương tự với công cụ SEAMonster dành cho MS Windows. Vì nó không có một thay thế dòng lệnh, nó sẽ không có nhiều trợ giúp khi có hàng trăm hình ảnh được chuyển đổi.

Trả lời

23

Sử dụng lệnh như Delan đề xuất với bổ sung "-strip" cờ để loại bỏ dữ liệu EXIF, điều này đã làm giảm kích thước của một số hình ảnh của tôi mạnh mẽ. Đây là một tập lệnh bash cho nền tảng Unix, nhưng bạn chỉ có thể sử dụng phần thứ hai cho các hình ảnh riêng lẻ.

for X in *.jpg; do convert "$X" -resize 602x400 -strip -quality 86 "$X"; done 

Điều này sẽ chuyển đổi tất cả hình ảnh trong thư mục.

+3

Cảnh báo: sử dụng 'convert' với cùng đầu vào và đầu ra tên tệp có thể là một hoạt động không an toàn. Hoặc ghi vào một tên tập tin tạm thời và điều kiện 'mv' temp ghi đè lên bản gốc, hoặc chỉ sử dụng mogrify (một phần của bộ ImageMagick). Trang người dùng cho trạng thái 'mogrify (1)' "Mogrify ghi đè tệp hình ảnh gốc, trong khi đó, chuyển đổi (1) ghi vào một tệp hình ảnh khác." –

6

Sử dụng -quality để thiết lập mức độ nén:

convert DSC_0124.JPG -scale 20% -size 24% -quality [0..100] img1.jpg 
2

Nếu bạn đang chạy trang web của bạn trên PHP, bạn có thể muốn xem xét kịch bản thay đổi kích thước hình ảnh SLIR, nó thay đổi kích thước công việc thành nhiều ràng buộc khác nhau (xem bên dưới) và lưu trữ kết quả.

Parameters: 
w Maximum width 
h Maximum height 
c Crop ratio 
q Quality 
b Background fill color 
p Progressive 

http://shiftingpixel.com/2008/03/03/smart-image-resizer/

http://code.google.com/p/smart-lencioni-image-resizer/

+0

Tôi đang sử dụng python-django. – nixnotwin

3

Bạn có thể xác định kích thước tối đa của hình ảnh đầu ra tại 100KB như thế này:

convert DSC_0124.JPG -resize 602x400! -strip -define jpeg:extent=100KB img1.jpg 
+2

Hãy cẩn thận, "!" cờ để thay đổi kích thước bỏ qua tỷ lệ khung hình và '!' có thể là một ký tự shell đặc biệt, thường cần phải được thoát. –

Các vấn đề liên quan