~에 따르면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