[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавление объекта imagick в zip архив "на лету"
Allan Stark
Сценарий должен считывать с диска графический файл в одном формате, при помощи imagick-а конвертировать его в другой и вкладывать в zip архив.

Что-то типа:

$zip = new ZipArchive();
$image = new Imagick($file);
$image->setImageFormat('jpeg');
$zip->addFile($image);



Проблема в том, что $zip->addFile похоже работает только с строковым параметром пути файла, принимать напрямую объект не хотит, хотя то же echo $image прекрасно отдает графический файл (конечно при наличии правильных предворяющих хедеров).

Есть ли способ стандартными средствами засунуть объект imagick-а в архив без промежуточного сохранения файла на диск?
Lenarfate
Цитата
Есть ли способ стандартными средствами засунуть объект imagick-а в архив без промежуточного сохранения файла на диск?

нет, вам придется передавать в метод addFile() строкой путь к файлу
AllesKlar
Цитата (Lenarfate)
нет, вам придется передавать в метод addFile() строкой путь к файлу

ZipArchive::addFromString

_____________
[продано копирайтерам]
Lenarfate
AllesKlar
вам не кажется, что addFromString, суд по параметрам, принимает содержимое файла, а не объект
Allan Stark
AllesKlar
Смотрел в справку, искренне думал что addFromString работает только со строками, но оказывается с бинарным содержимым тоже.

В моем случае $zip->addFromString($unix_filename, $image); прекрасно обработало бинарный объект Imagick-а.

Спасибо Вам.
AllesKlar
Цитата (Lenarfate @ 29.04.2014 - 17:52)
AllesKlar
вам не кажется, что addFromString, суд по параметрам, принимает содержимое файла, а не объект

Нет, не кажется.
Строка понятие растяжимое, которое может содержать также и бинарные данные.
А если глянуть в документацию, то мы в том и убедимся.

Ну и суть вопроса, собственно не в том, чтобы именно объект запихать в архив, а в том, чтобы избежать буферизации на диск.

Ведь на диск тоже не пишется объект, а преобразовывается сначала в бинарную стоку.

И потом, правила хорошего тона для любого класса - это иметь метод toString()
Он может быть даже теневым. К сожалению, не многим php разработчикам об этом известно. К счастью, разработчики Imagick правильные кодеры smile.gif

_____________
[продано копирайтерам]
Lenarfate
AllesKlar
Цитата
К сожалению, не многим php разработчикам об этом известно

теперь и мне известно biggrin.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.