PHP:使用Imagemagick将图片转换为TIFF

3
我正在尝试使用ImageMagick将图像转换为TIFF格式,但在尝试写入文件时遇到了问题。我收到一个错误消息,内容如下:
“无法打开图像... error/blob.c/OpenBlob/2584”
这是我正在使用的代码:
$im2 = new Imagick($image);
$im2->setImageFormat("tiff");
$im2->setImageColorSpace(5); 
$im2->writeImage("test.tiff");

$image是我传递给图像文件的url。我只是运行一个简单的测试函数来使其工作,并将test.tiff放在同一个文件夹中。这里可能出了什么问题?我很难找到相关文档。


它能与本地文件一起使用吗? - Pekka
该文件在服务器上是本地的。我正在使用其他ImageMagick脚本做同样的事情,所以这不应该是一个问题。 - pfunc
2个回答

2

Imagick可以处理本地文件和远程文件。

$im2 = new Imagick($image);
$im2->setImageFormat("tiff");
$im2->setImageColorSpace(5); 
$im2->writeImage("test.tiff");

它可以在远程和本地服务器上同样有效地工作。 如pfunc所述,这是权限错误。 另一种出现此错误的情况是目录定义不正确。 抱歉我的英语。


0

Imagick 构造函数的参数是用于加载本地图像文件的。要加载远程图像文件,您应该实例化一个没有参数的 Imagick 对象,并且:

  • 下载图像内容并将其传递给 readImageBlob 方法,或者
  • fopen URL 并将其传递给 readImageFile 方法。

例如:

// assuming $image is an URL or path to a local file
$handle = fopen($image, 'rb');
$im2 = new Imagick();
$im2->readImageFile($handle);
$im2->setImageFormat("tiff");
$im2->setImageColorSpace(5);
$im2->writeImage("test.tiff");
fclose($handle);
$im2->destroy();

我遇到的错误是在尝试写文件时发生的,而不是打开文件。抱歉,应该更清楚一些,它是:无法打开文件test.tiff。 - pfunc
抱歉,是因为文件权限的问题。不过谢谢你的回答,确实有帮助。 - pfunc
1
我不知道为什么你不直接使用Imagick :: readImage——从文件名读取图像。 - Patrick
我不确定Imagick::readImage除了文件名之外是否适用于URL。我刚刚测试了一下,它是可以的。所以,是的,你可以使用$im2->readImageFile($url);并跳过fopen/fclose部分。好提示。 - scoffey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接