2011-01-18 3 views
2

Я пытаюсь преобразовать и изображение в tiff с помощью imagemagick, но я столкнулся с проблемой при попытке записать файл. Я получаю сообщение об ошибке, которая говорит:PHP: Преобразование изображения в TIFF с imagemagick

Невозможно открыть файл ... ошибка/blob.c/OpenBlob/2584'

Это код, я использую:

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

$ image - это всего лишь URL-адрес. Я перехожу к файлу изображения. Я просто запускаю простую тестовую функцию, чтобы заставить ее работать и поместить test.tiff в ту же папку. Что я могу делать неправильно? Не удалось найти много документации по этому вопросу.

+0

Работает ли он с локальным файлом? –

+0

Файл является локальным на сервере. Я делаю то же самое с другими сценариями imagemagick, так что это не должно быть проблемой. – 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(); 
+0

Ошибка, которую я получаю, это когда она пытается записать файл. Не открывайте файл. Извините, должно быть, было более ясно, это: невозможно открыть файл test.tiff. – pfunc

+0

doh, это было из-за прав доступа к файлам. Извините, ваш ответ действительно помог. – pfunc

+1

Я не знаю, почему вы не просто использовали Imagick :: readImage - Читает изображение из имени файла. – pthurmond

2

Imagick работает с локальными файлами и удаленными файлами.

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

Он будет работать одинаково хорошо как на удаленном, так и на локальном сервере. Pfunc уже сказал, что это ошибка разрешений. Другим случаем возникновения этой ошибки является неправильное определение каталога. sorry my en

Смежные вопросы