명령 줄에서 이미지를 병합하는 방법은 무엇입니까? [닫은]


111

CSS Sprite 기술을 사용하여 몇 개의 축소판을 단일 이미지로로드하고 싶습니다 . 따라서 서버에서 오프라인으로 단일 파일의 축소판 몇 개를 "병합"해야합니다.

같은 크기의 축소판이 10 개 있다고 가정합니다. Linux 명령 줄에서 "병합"하는 방법은 무엇입니까?

답변:


198

CSS 스프라이트를 만드는 데 좋은 ImageMagic 을 사용해 볼 수도 있습니다 . 여기 에 대한 몇 가지 자습서 .

예 (수직 스프라이트) :

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

예 (수평 스프라이트) :

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

45
참고 : 이것은 +append대신 수평 스프라이트 사용을 위해 수직 스프라이트를 생성합니다 -append.
Chango dec

13
당신이 게으른 경우convert -append *.png out.png
ChillarAnand

이것은 작동하지만 대용량 파일의 경우 많은 시간이 걸립니다. 빠른 합성 방법이 있습니까?
Vlad Tsepelev

@VladTsepelev 많은 PNG를 연결한다는 것은 작업을 위해 (픽스맵으로) 디코딩하고 마지막으로 다시 인코딩하는 것을 의미합니다. 기존 스프라이트를 매우 자주 확장하려면 디코딩 된 픽스맵 버전을 유지하면 속도가 빨라질 수 있습니다. 이 작업을 수행하기 위해 PNM 도구를 사용하여 수행하는 것에 대한 내 대답을 참조하십시오. 그러나 물론 픽스맵 버전은 PNG보다 훨씬 크기 때문에 더 많은 스토리지를 사용할 것으로 예상됩니다.
Alfe

1
그것은 말한다 : ´convert-im6.q16 : width or height exceeds limit`ktwo201121817-c102_lpd-targ.fits_autoaper.png '@ error / cache.c / OpenPixelCache / 3839.´
zabop

28

ImageMagick의 더 가볍고 빠른 포크 인 GraphicsMagick 을 사용할 수도 있습니다 .

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

12 개의 이미지 병합에 대한 간단한 시간 비교 :

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은 ImageMagick보다 거의 두 배 빠릅니다.


7

pnmcatnetpbm-package를 사용하십시오 .

입력 파일을 사용하기 위해 이리저리 변환해야 할 것입니다.

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

4

그림을 왼쪽에서 오른쪽으로 병합하려면 다음 명령을 사용하십시오.

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

메모 +append대신을 -append.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.