Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Imagemagick 将PostScript转换为GIF的最快方法是什么?_Imagemagick_Postscript - Fatal编程技术网

Imagemagick 将PostScript转换为GIF的最快方法是什么?

Imagemagick 将PostScript转换为GIF的最快方法是什么?,imagemagick,postscript,Imagemagick,Postscript,我现在正在使用ImageMagickconvert实用程序。我有一个PostScript文件,转换为GIF大约需要90秒 我正在寻找一种更快的方法,通过将选项修改为“convert”来实现这一点 当我说“快”时,最好是几秒钟,但我会采取任何明显的加速。适合交互式GUI的东西 我只需要黑白或灰度的图像(特别是地震数据的图像“摆动轨迹”,所以黑白很好。) 其他可接受的格式有BMP、GIF、JPEG、JPG、PCX、PGM、PNG、PNM、PPM、RAS、TGA、TIF或TIFF 试图坚持ImageM

我现在正在使用ImageMagick
convert
实用程序。我有一个PostScript文件,转换为GIF大约需要90秒

我正在寻找一种更快的方法,通过将选项修改为“convert”来实现这一点

当我说“快”时,最好是几秒钟,但我会采取任何明显的加速。适合交互式GUI的东西

我只需要黑白或灰度的图像(特别是地震数据的图像“摆动轨迹”,所以黑白很好。)

其他可接受的格式有BMP、GIF、JPEG、JPG、PCX、PGM、PNG、PNM、PPM、RAS、TGA、TIF或TIFF


试图坚持ImageMagick,因为它已经安装好了,并试图避免向我的老板推销任何新东西。还是很高兴听到其他建议

我的建议是:使用Ghostscript

由于您已经安装了一个工作的ImageMagick,这意味着Ghostscript也存在:因为ImageMagick无法单独将PDF或PostScript转换为光栅图像——它必须调用Ghostscript作为其代理来完成此操作

Ghostscript可以直接将PDF/PostScript输入转换为TIFF/TIF/TIFFg4、JPEG、PBM、PCX、PNG、PNM、PPM、BMP光栅图像输出

优点是:您不需要使用ImageMagick。因此,它速度更快,还可以让您更直接地控制转换参数。如果您通过ImageMagick运行Ghostscript,这是一种间接级别,并不总是必需的。(有时可能需要对Ghostscript生成的光栅图像数据添加一些微调和后处理操作,但您的情况似乎并非如此。)


唯一的缺点是:Ghostscript无法生成GIF。如果需要GIF(您似乎不需要),则需要ImageMagick将Ghostscript的光栅输出后处理为GIF

例如,通过运行以下命令,可以查看ImageMagick如何调用Ghostscript(以及调用时使用的参数——在stderr上查找包含
gs
gsx
gswin32c
gswin64c
)的打印行:

 convert -verbose some.pdf[0] some.gif

更新

我确实运行了一个非常非常不科学的“基准测试”,每次运行以下两个命令100次,将随机选择的333页转换为GIF,测量所消耗的时间。我并行运行这些命令,因此两者都必须处理相同的总体系统负载,从而使结果更具可比性:

  • “舒适地”使用ImageMagick的
    转换直接生成GIF:

    time for i in $(seq -w 1 100); do
        convert                      \
           PDF32000_2008.pdf[333]    \
           p333-im-no_${i}.gif ;
    done
    
  • 使用Ghostscript从同一页面创建灰度PNG,将Ghostscript的输出管道化到ImageMagick的
    convert
    ,以获取GIF:

    time for i in $(seq -w 1 100); do
        gs                      \
          -q                    \
          -o -                  \
          -dFirstPage=333       \
          -dLastPage=333        \
          -sDEVICE=pnggray      \
           PDF32000_2008.pdf    \
        |                       \
        convert                 \
          -                     \
           p333-gs-no_${i}.gif ;
    done
    
  • 第一个命令的计时结果(运行“舒适的”
    convert
    以实现PDF->GIF转换,该转换仅在“背后”使用Ghostscript):

    第二个命令的计时结果(直接+公开运行
    gs
    ,将其输出到
    convert

    real  1m27.370s
    user  1m23.447s
    sys   0m3.435s
    
    还有一件事:

    • 100个“鬼脚本”(Ghostscript)gif的总大小为1.6mbyte,但它们是8位灰度

    • 100个“ImageMagic direct”GIF的总大小为1.2M字节,但它们是2位的黑色+白色

    • 我目前没有动机进一步调整测试命令行参数,以使生成的文件更具可比性


    这个结果(149秒对87秒)给了我足够的信心,让我相信,当您遵循我的建议时,您可以获得显著的性能改进。:-

    我的建议是:使用Ghostscript

    由于您已经安装了一个工作的ImageMagick,这意味着Ghostscript也存在:因为ImageMagick无法单独将PDF或PostScript转换为光栅图像——它必须调用Ghostscript作为其代理来完成此操作

    Ghostscript可以直接将PDF/PostScript输入转换为TIFF/TIF/TIFFg4、JPEG、PBM、PCX、PNG、PNM、PPM、BMP光栅图像输出

    优点是:您不需要使用ImageMagick。因此,它速度更快,还可以让您更直接地控制转换参数。如果您通过ImageMagick运行Ghostscript,这是一种间接级别,并不总是必需的。(有时可能需要对Ghostscript生成的光栅图像数据添加一些微调和后处理操作,但您的情况似乎并非如此。)


    唯一的缺点是:Ghostscript无法生成GIF。如果需要GIF(您似乎不需要),则需要ImageMagick将Ghostscript的光栅输出后处理为GIF

    例如,通过运行以下命令,可以查看ImageMagick如何调用Ghostscript(以及调用时使用的参数——在stderr上查找包含
    gs
    gsx
    gswin32c
    gswin64c
    )的打印行:

     convert -verbose some.pdf[0] some.gif
    

    更新

    我确实运行了一个非常非常不科学的“基准测试”,每次运行以下两个命令100次,将随机选择的333页转换为GIF,测量所消耗的时间。我并行运行这些命令,因此两者都必须处理相同的总体系统负载,从而使结果更具可比性:

  • “舒适地”使用ImageMagick的
    转换直接生成GIF:

    time for i in $(seq -w 1 100); do
        convert                      \
           PDF32000_2008.pdf[333]    \
           p333-im-no_${i}.gif ;
    done
    
  • 使用Ghostscript从同一页面创建灰度PNG,将Ghostscript的输出管道化到ImageMagick的
    convert
    ,以获取GIF:

    time for i in $(seq -w 1 100); do
        gs                      \
          -q                    \
          -o -                  \
          -dFirstPage=333       \
          -dLastPage=333        \
          -sDEVICE=pnggray      \
           PDF32000_2008.pdf    \
        |                       \
        convert                 \
          -                     \
           p333-gs-no_${i}.gif ;
    done
    
  • 第一个命令的计时结果(运行“舒适的”
    convert
    以实现PDF->GIF转换,该转换仅使用Ghostscript“b