我正在编写一个程序来处理Julia中的一系列图像,比如ImageMagick,但有一些-evaluate-sequence
不能做的事情.在花时间加载图像之前,我想快速检查以确保它们的大小,颜色深度和颜色空间都相同.我可以从ImageMagic获取这样的信息,如下所示:
identify -ping -format "%[G] %[depth] %[colorspace]" IMAGENAME.PNG
Run Code Online (Sandbox Code Playgroud)
(或.JPG或IM将阅读的任何其他内容).
计划A是使用ImageMagick.jl库,但在浏览源之后,看起来MagickWand总是首先加载图像.
有没有办法使用ImageMagick.jl(或其他一些Julia库)来获取信息而不加载文件?如果不 ...
B计划是自己发起一系列调用identify
并处理结果.我可以验证IM是否存在并加载,因为这有效:
readstring(`identify --version`)
Run Code Online (Sandbox Code Playgroud)
但:
cmd = "identify -ping -format '%[colorspace] %[depth] %[G]' MYIMAGE.JPG"
Run Code Online (Sandbox Code Playgroud)
返回一个字符串,复制并粘贴到命令行,工作得很好.但是当我尝试使用REPL时:
cmd = "identify -ping -format '%[colorspace] %[depth] %[G]' MYIMAGE.JPG"
readstring(`$cmd`)
Run Code Online (Sandbox Code Playgroud)
这是发生的事情:
ERROR: could not spawn `"identify -ping -format '%[colorspace] %[depth] %[G]' IMG_1382.JPG"`: no such file or directory (ENOENT)
in _jl_spawn(::String, ::Array{String,1}, ::Ptr{Void}, ::Base.Process, ::Base.DevNullStream, ::Base.PipeEndpoint, ::Base.TTY) at ./process.jl:321
in #424 at ./process.jl:478 [inlined]
in setup_stdio(::Base.##424#425{Cmd,Ptr{Void},Base.Process}, ::Tuple{Base.DevNullStream,Pipe,Base.TTY}) at ./process.jl:466
in #spawn#423(::Nullable{Base.ProcessChain}, …
Run Code Online (Sandbox Code Playgroud)