Làm thế nào để hợp nhất hình ảnh trong dòng lệnh? [đóng cửa]


110

Tôi muốn thử kỹ thuật CSS Sprite để tải một vài hình thu nhỏ dưới dạng một hình ảnh duy nhất. Vì vậy, tôi cần "hợp nhất" một vài hình thu nhỏ trong một tệp duy nhất ngoại tuyến trong máy chủ.

Giả sử tôi có 10 hình thu nhỏ có cùng kích thước. Làm thế nào bạn đề nghị tôi "hợp nhất" chúng từ dòng lệnh Linux?

Câu trả lời:


197

Bạn cũng có thể thử ImageMagic , một công cụ tuyệt vời để tạo CSS sprites. Một số hướng dẫn về nó ở đây .

Ví dụ (sprite dọc):

convert image1.png image2.png image3.png -append result/result-sprite.png

Ví dụ (sprite ngang):

convert image1.png image2.png image3.png +append result/result-sprite.png

45
Lưu ý: Điều này sẽ tạo ra một sprite dọc, để sử dụng sprite ngang +appendthay vì -append.
Chango

13
Nếu bạn lười biếng,convert -append *.png out.png
ChillarAnand 29/12/16

Điều này hoạt động, nhưng đối với các tệp lớn thì mất rất nhiều thời gian. Có cách nào để tổng hợp nhanh không?
Vlad Tsepelev

@VladTsepelev Kết hợp nhiều PNG có nghĩa là giải mã chúng (thành ảnh bản đồ) cho hoạt động và cuối cùng mã hóa lại chúng. Nếu bạn muốn mở rộng một sprite hiện có thường xuyên, thì có thể giữ các phiên bản pixmap đã giải mã có thể tăng tốc độ mọi thứ. Xem câu trả lời của tôi để thực hiện điều đó bằng cách sử dụng các công cụ PNM để đạt được hoạt động này. Nhưng tất nhiên, các phiên bản pixmap lớn hơn nhiều so với PNG, vì vậy bạn có thể sử dụng nhiều dung lượng hơn.
Alfe,

1
Nó nói:'convert-im6.q16: chiều rộng hoặc chiều cao vượt quá giới hạn 'ktwo201121817-c102_lpd-targ.fits_autoaper.png' @ lỗi / cache.c / OpenPixelCache / 3839.'
zabop

28

Bạn cũng có thể sử dụng GraphicsMagick , một bản fork nhẹ hơn và nhanh hơn của ImageMagick:

gm convert image1.png image2.png -append combined.png

So sánh thời gian đơn giản của việc hợp nhất 12 hình ảnh:

time convert image{1..12}.jpg -append test.jpg

real    0m3.178s
user    0m3.850s
sys     0m0.376s

time gm convert image{1..12}.jpg -append test.jpg

real    0m1.912s
user    0m2.198s
sys     0m0.766s

GraphicsMagick gần như nhanh gấp đôi ImageMagick.


7

Sử dụng pnmcatgói netpbm.

Bạn có thể phải chuyển đổi các tệp đầu vào của mình để sử dụng nó:

pnmcat -lr <(pngtopnm 1.png) <(pngtopnm 2.png) | pnmtopng > all.png

4

Nếu bạn muốn hợp nhất các hình ảnh từ trái sang phải, hãy sử dụng lệnh sau:

convert image{1..0}.png +append result/result-sprite.png

Lưu ý +appendthay vì -append.

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.