【问题标题】:NEF to JPG with ImageMagick使用 ImageMagick 将 NEF 转为 JPG
【发布时间】:2015-03-26 05:58:08
【问题描述】:

我是第一次使用 ImageMagick,我已经成功安装了所有依赖项,并且可以通过终端运行转换,但是我在从 PHP 运行一些命令时遇到了问题。

这是一个让我完全难过的问题,这在终端中效果很好:

 convert DSC4741.nef result.jpg

但这不会在 PHP 中运行:

$im = new Imagick( 'DSC4741.nef' );
$im->setImageFormat( 'jpg' );
$im->writeImage( 'result.jpg' );
$im->clear();
$im->destroy();

我可以用 PHP 转换 jpeg 没问题,但它拒绝做 .NEF。

这是我检查过的内容:

  • 文件的权限很好(全局可写)
  • 我可以用确切的代码转换 JPG
  • 我将扩展名改为小写
  • 从文件名中删除了前面的下划线

任何帮助将不胜感激!

【问题讨论】:

  • 我很好奇,因为你不说。使用 .nef 执行此操作时会发生什么错误?怎么了? ^^
  • NEF 文件可能有 30+MB,因此您可能会遇到空间问题。只是为了测试,在读入之前尝试将图像尺寸设置得更小,比如 1024x768,看看是否有帮助......使用$im->setSize()
  • @Jon 我只是得到一个空白页,浏览器控制台给了我一个 500 Internal Server Error。
  • @MarkSetchell 我尝试输入 800x600,但它仍然在做同样的事情。 :-(
  • 您是在 OS X、Linux 还是 Windows 上运行?您是在 Apache 中运行 PHP,还是仅使用独立脚本,如 #!/usr/bin/php <?php $im=... ?>

标签: php image-processing imagemagick imagemagick-convert


【解决方案1】:

问题似乎是您没有使用绝对路径。 使用类似 __FILE__ 或在 Windows 机器上(您需要将反斜杠替换为正斜杠):

$im = new Imagick( str_replace('\\', '/', dirname(__FILE__)) . '/DSC4741.nef' );
$im->setImageFormat( 'jpg' );
$im->writeImage( str_replace('\\', '/', dirname(__FILE__)) . '/result.jpg' );
$im->clear();
$im->destroy();

如果这不能解决问题,则可能是 imagemagick 中没有安装或链接用于转换此文件格式的外部程序。 见这里:Imagick is unable to open DNG images

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2023-02-26
    • 2013-09-11
    • 2021-07-05
    • 2013-01-20
    • 1970-01-01
    相关资源
    最近更新 更多