Я не уверен в этом, но проделал некоторую работу и хотел поделиться ею. Я или один из моих друзей из StackOverflow могут придумать что-нибудь лучше, когда мы поймем лучше, поэтому я покажу, что у меня есть.
Медлительность, вероятно, происходит из-за необходимости запуска 5 процессов и необходимости читать изображения JPEG и декодировать их 5 раз, поэтому я хочу использовать один процесс и делать все это за один раз.
Вот что у меня есть:
convert image.jpg -colorspace cmyk -separate -write MPR:orig \
+delete -colorspace gray -threshold 101% -write MPR:blackx3 -delete 0,1,2 \
\( MPR:orig -delete 1,2,3 MPR:blackx3 -set colorspace CMYK -combine -write C.jpg +delete \) \
\( MPR:orig -delete 0,2,3 MPR:blackx3 -swap 0,1 -set colorspace CMYK -combine -write M.jpg +delete \) \
\( MPR:orig -delete 0,1,3 MPR:blackx3 -swap 0,2 -set colorspace CMYK -combine -write Y.jpg +delete \) \
MPR:orig -delete 0,1,2 K.jpg
Я уверен, что это немного утомительно, поэтому я объясню каждую строку за раз ...
Строка 1: Загрузить исходное изображение, преобразовать в цветовое пространство CMYK и разделить на 4 отдельных изображения, одно с C, одно с M, одно с Y и одно с K. Сохраните все 4 из этих изображений в общей массе оперативной памяти под названием "orig"
.
Строка 2: Удалите последний канал в стеке, который был K, оставив C, M и Y. Сделайте все эти 3 изображения полностью черными и сохраните их в памяти с именем "blackx3"
поэтому у меня есть три пустых чёрных канала на потом.
Строка 3: Перезагрузите CMYK из ОЗУ, удалите MYK, оставив C, затем загрузите 3 пустых черных канала. Теперь у нас в стеке C, Black, Black, Black. Скажите IM, что 4 изображения в нашем стеке являются каналами CMYK, и объедините их и напишите как "C.jpg"
. Убери.
Строка 4: Перезагрузите CMYK из ОЗУ, удалите CYK, оставив M, затем загрузите 3 пустых черных канала. Теперь у нас в стеке M, Black, Black, Black. Поменять порядок на Черный, М, Черный, Черный. Скажите IM, что 4 изображения в нашем стеке являются каналами CMYK, и объедините их и напишите как "M.jpg"
. Убери.
Строка 5: Перезагрузите CMYK из ОЗУ, удалите CMK, оставив Y, затем загрузите 3 пустых черных канала. Теперь в нашем стеке есть Y, Black, Black, Black. Поменяйте порядок на Черный, Черный, Y, Черный. Скажите IM, что 4 изображения в нашем стеке являются каналами CMYK, и объедините их и напишите как "Y.jpg"
. Убери.
Строка 6: Загрузить CMYK из ОЗУ. Удалить CMY, оставив черный, сохранить как "K.jpg"
.
Это дает: