imagemagick에서 파일 설명자를 사용하기 위한 올바른 구문

imagemagick에서 파일 설명자를 사용하기 위한 올바른 구문

~에 따르면ImageMagick 매뉴얼, 파일 설명자는 v.6.4.9-3부터 지원됩니다. v.6.9.7-4를 실행 중입니다. 그러나 올바른 구문을 결정할 수 있었습니다. 시도한 예:

convert 'xc:white[100x100!]' fd:3 ;       display fd:3
convert 'xc:white[100x100!]' miff:fd:3 ;  display fd:3
convert 'xc:white[100x100!]' miff: fd:3 ; display fd:3
convert 'xc:white[100x100!]' miff:fd:3 ;  display miff:fd:3

첫 번째 및 두 번째 명령에서 발생한 오류는 다음과 같습니다.

convert-im6.q16: no encode delegate for this image format `FD' @ error/constitute.c/WriteImage/1176.
display-im6.q16: no decode delegate for this image format `' @ error/constitute.c/ReadImage/504.
display-im6.q16: no data returned `3' @ error/fd.c/ReadFDImage/123.

세 번째 명령을 사용하면 터미널이 중단되지만 결국 처음 두 명령과 동일한 오류 메시지가 생성됩니다. 네 번째 명령은 다음 오류를 생성합니다.

Aborted
display-im6.q16: improper image header `/tmp/magick-7315YQugjYiINA9c' @ error/miff.c/ReadMIFFImage/507.

예를 들어 ImageMagick의 크로스 플랫폼 구현 대신 기본 bash 파일 설명자를 사용하여 리디렉션을 수행할 수 있습니다.

exec 3> myfifo ; convert 'xc:white[100x100!]' miff:- 1>&3 ; exec 3>&-; exec 3< myfifo; display - 0<&3 ; exec 3<&- ; rm myfifo

또는

exec 3> myfifo ; convert 'xc:white[100x100!]' miff:- 1>&3 ; exec 3>&-; exec 3< myfifo; display <&3 ; exec 3<&- ; rm myfifo

하지만 작성하는 데 훨씬 더 길고, 크로스 플랫폼이 아니기 때문에 ImageMagick의 파일 설명자 구문을 알아내길 바랍니다.

내 목적은 여러 fd에서 변환 명령을 읽을 수 있도록 하는 것입니다. 예를 들면 다음과 같습니다.

<upstream commands> | convert - fd:3 -append | <downstream commands>

편집하다:

다음과 같은 하이브리드 접근 방식을 사용할 수 있습니다.

exec 3> myfifo ; convert 'xc:white[100x100!]' miff:- 1>&3 ; exec 3>&-; exec 3< myfifo; display fd:3 ; exec 3<&- ; rm myfifo

그러나 작성을 시도하면 fd:3작동하지 않습니다.

exec 3> myfifo ; convert 'xc:white[100x100!]' miff:fd:3 ; exec 3>&-; exec 3< myfifo; display fd:3 ; exec 3<&- ; rm myfifo

관련 정보