@Korneliy

Как сохранить writeImage все файлы директории?

Есть такой рабочий код:
foreach (glob('*.jpg') as $ext) {
$imagick = new Imagick($ext); 
$imagick->setImageFormat('webp');
$imagick->setImageCompressionQuality(75);
$imagick->writeImage('*.webp');
}

Но сохраняется только один (последний) файл с именем *.webp)
Пробовал подставить так:
$imagick->writeImage($ext);
Но в этом случае совсем ничего не происходит.

Хотелось бы, чтобы в той же папке сохранялись все файлы с теми же именами, что и файлы jpg. Такое возможно вообще?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
@alexalexes
$imagick->writeImage('*.webp');
У вас имя файла на протяжении всего цикла одно и то же.
Чему вы удивляетесь, когда файл перезаписывается несколько раз, и остается последний перезаписанный вариант?
Решение:
1. Нужно посмотреть, что выводится в $ext:
var_dump($ext);
2. Если это действительно имя открытого файла, то самое грубое решение, добавить нужное расширение в конце, несмотря на наличие jpg.
$imagick->writeImage($ext.'.webp');
3. Хорошо бы посмотреть файл лога ошибок php - error_log. Возможно, есть еще какие-то проблемы с записью файлов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы