【问题标题】:How do I fix this error with ImageMagick?如何使用 ImageMagick 修复此错误?
【发布时间】:2011-09-13 02:26:39
【问题描述】:

我正在使用 ImageMagick 将 RAW 文件(*.nef 扩展名)转换为 JPEG 图像。我实际上是在 PHP 中执行此操作,但没有使用 IMagick 扩展(我花了太多时间将头撞到墙上,试图让最终我放弃的工作)。相反,我使用 PHP 的 exec() 函数从命令行调用 ImageMagick 并在那里进行操作。

无论如何,我编写了一个简单的 PHP 脚本来执行此操作 - 将 NEF 图像转换为 JPEG 图像 - 它成功了!我对其进行了多次测试。当 JPEG 不存在时,它创建了它。当 JPEG 已经存在时,它会覆盖它。完美!

直到今天。我上周五写了那个剧本。今天(星期一),当它尝试使用它时,它停止了工作。我确实什么改变了它,但几天后它没有通过我在星期五运行的所有相同测试。我可以从命令行检索输出,这些是它这次遇到的错误:

Magick: `%s' (%d) dcraw.exe -4 -w -O "C:/Windows/TEMP/magick-iDvVnHw-.ppm" "C:/Windows/TEMP/magick-hYeYwWRd" @ error/utility.c/SystemCommand/2094.
Magick: delegate failed `dcraw.exe -4 -w -O "%u.ppm" "%i"' @ error/delegate.c/InvokeDelegate/1058.
Magick: unable to open image `C:/Windows/TEMP/magick-iDvVnHw-.ppm': No such file or directory @ error/blob.c/OpenBlob/2588.
Magick: missing an image filename `E:\test.jpg' @ error/convert.c/ConvertImageCommand/3015.

这些错误在星期五没有出现。为什么他们现在出现了?他们的意思是什么?我能做些什么呢?提前致谢。

【问题讨论】:

    标签: php command-line imagemagick imagick


    【解决方案1】:

    我在 linux 上遇到过类似的错误:

    No such file or directory @ error/blob.c/OpenBlob/2709. convert: no images defined `/tmp/transform_5c88983-1.jpg' @ error/convert.c/ConvertImageComman
    

    问题是我的德语图片名中有一个特殊字符:

    images/1/14/Ministerium-für-Bildung.jpg
    

    我进入文件夹并创建了一个没有字符的符号链接:

    ln -s Ministerium-für-Bildung.jpg Ministerium-fr-Bildung.jpg
    

    【讨论】:

      【解决方案2】:

      好吧,我能够解决它。我做了两件事,我不完全确定第一件事是否有任何影响,但我会为其他任何挣扎的人提到这两件事。首先,由于临时文件似乎有问题,我更改了C:\Windows\TEMP 文件夹上的 Windows 安全/权限,以明确允许IIS_USER 完全控制,以及Everyone

      但其次,更重要的是,我将传递的命令更改为 exec()。以前我的命令看起来像这样:

      $cmd  = 'C: & "C:\\Program Files (x86)\\ImageMagick\\convert.exe" ';
      $cmd .= '"E:\\test.nef" "E:\\test.jpg" 2>&1';
      exec($cmd, $output, $return);
      

      所以我指定了一个新的“临时”目录,并设置当前路径,如下所示:

      $cmd  = 'SET MAGICK_TMPDIR=E:\\Temp&SET path=C:\\Program Files (x86)\\;%path%& ';
      $cmd .= '"C:\\Program Files (x86)\\ImageMagick\\convert.exe" ';
      $cmd .= '"E:\\test.nef" "E:\\test.jpg" 2>&1';
      exec($cmd, $output, $return);
      

      这就成功了!脚本再次运行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-07-27
        • 1970-01-01
        • 2020-02-22
        • 2014-03-01
        • 2012-07-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多