【问题标题】:Imagemagick error when trying to load file尝试加载文件时出现 Imagemagick 错误
【发布时间】:2014-07-28 04:36:09
【问题描述】:

我正在尝试创建 pdf 文件的 jpg 预览,如以下问题所述:How do I convert a PDF document to a preview image in PHP?

这样做的相关代码是:

$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;

我在我的本地主机上的 pdf 文件上运行它,但收到错误:

Fatal error: Uncaught exception 'ImagickException' with message 'Imagick::__construct(): HTTP request failed! HTTP/1.0 400 Bad Request '

这里触发了错误:

$im = new imagick(build_url('uploads/files/'.$file_data['file_name'].'[0]'));

这与上面示例代码中的第一行相同,当我回显它提供了正确的路径时,我提供了 pdf 文件的完整 url 路径

http://oursite.localhost:8888/uploads/files/file_name.pdf[0]

有谁知道是什么导致了这个错误?谢谢!

【问题讨论】:

  • 如果使用相对路径? './uploads/file/'.$file_data['file_name'].'[0]'?
  • 感谢您的建议...当我尝试时得到“没有这样的文件或目录”。但是,我刚刚发现了这个stackoverflow.com/questions/9783216/…,所以我要尝试一下
  • 首先你告诉 imagick 从 URL 加载它......不是本地文件系统......你请求的 URL 从 apache 收到一个 HTTP 错误,说错误请求很可能是因为 [0 ] 不喜欢 mod 安全性...摆脱 build_url
  • 显示你的函数build_url() 似乎构建了一个错误的url
  • build_url() 创建我们的网址并且它可以正常工作。当我回显build_url('uploads/files/'.$file_data['file_name'].'[0]'); 我得到http://oursite.localhost:8888/uploads/files/file_name.pdf[0]

标签: php pdf imagemagick


【解决方案1】:

ImageMagick 作为 HTTP 客户端相当糟糕。先拉下你的图片,然后将其作为 blob 输入 ImageMagick

使用以下:

 $image = file_get_contents(build_url('uploads/files/'.$file_data['file_name'].'[0]'));
 if ($image !== false)
   {
     $im = new imagick();
     $im->readImageBlob($image);
   }
 else
   {
     echo "Uh-oh... Cannot load image from URL!";
   }

【讨论】:

  • 加速 error_reporting - file_get_contents() 如果在拉入图像时出现问题,file_get_contents() 将以简单的英文为您提供人类可读的错误消息跨度>
猜你喜欢
  • 2011-04-02
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2018-05-03
  • 1970-01-01
  • 2017-10-05
  • 2012-04-04
相关资源
最近更新 更多