2017-04-11 11 views
0

이미지 크기를 조정하고 exif 데이터를 정리해야하지만 원본 이미지 big.jpg에서 exif 데이터를 출력하고 small.jpg에 대해 변환 된 이미지 크기를 출력합니다.다중 포맷 정보 필요 : -

즉 출력하지 EXIF ​​데이터 :

gm convert big.jpg -format "%w %h %[exif:DateTime]" -strip -resize "250x250>" -write small.jpg info:-

하지 출력 변환 화상 크기 (small.jpg)을한다 :

gm convert big.jpg -format "%w %h %[exif:DateTime]" -write info:- -strip -resize "250x250>" small.jpg

올바르게 수행하는 방법? 감사합니다.

답변

0

나는 두 개의 개의 해결책을 가지고 있습니다. - 하나는 못생긴 것이고, 하나는 매우 못생긴 것입니다! :-)

첫번째 그래서 파이프를 통해 전달되지 않는다 stderr에 기록한 상기 EXIF ​​데이터를 추출하고, 제 convert로 (내부 쓸데없는 싸움 =>마법 (magick) 이미지 파일 형식)에서 다음 파이프 이미지 즉, 크기 조정을 수행하고, 크기 조절 된 크기의 출력 : 두 개의 처리 단계 사이 MPR (마법 (magick) 영구 등록)에 한번만 원래 이미지가로드

gm convert big.jpg -format "%[exif:DateTime]" -write info:/dev/fd/2 miff:- | gm convert miff:- -strip -resize "250x250>" -format "%w %h" -write info:- small.jpg 
2017:04:06 09:12:02 
250 107 

번째 방법은 어쩌면 더 효율적인 저장을 . 두 단계는 단일 GraphicsMagick batch 프로세스 내에서 실행됩니다 : 다음의

cat - <<EOF | gm batch -prompt off 
convert big.jpg -write mpr:orig -format "%[exif:DateTime]" info:- 
convert mpr:orig -strip -resize "250x250>" -format "%w %h" -write small.jpg info:- 
EOF 

"bashisms" 그래서 당신이 bash에서 실행할 필요가 포함되어 있습니다.

+0

답장을 보내 주셔서 감사합니다.하지만 두 번의 호출에서이 작업을 수행하는 방법을 알고 있습니다. 한 번의 호출로 아름답게되고 싶습니다. –

+0

기술적으로 두 번째 것은'gm batch '에 대한 단일 호출입니다. –

+0

우리는 자식 작업자 프로세스로'gm batch'를 사용하고, stdout에서 결과를 얻으며, 하나의 호출과 두 가지 비교에 비해 속도가 30 % 씩 다르다는 것을 측정했습니다. 이제 두 번의 호출로 수행합니다. –