Преобразование байтового массива TIFF в байтовый массив JPEG в переполнении стека

Я не смог найти способ конвертировать байтовый массив TIFF в байтовый массив JPEG в PHP. Я попробовал следующее:

$im = imagecreatefromstring("49 49 2a 00 16 1d 00 00 80 3f e0 4f f0 04 16 0d II.........O....07 84 42 61 50 b8 64 36 1d 0f 88 44 62 51 38 a4 ..BaP.d6...DbQ8.56 2d 17 8c 46 63 51 b8 e4 76 3d 1f 90 48 64 52 V...FcQ..v...HdR
39 24 96 4d 27 94 4a 65 52 b9 64 b6 5d 2f 90 c0 9..M..JeR.d.....");

но возвращается Data is not recognized format,

Итак, как мне преобразовать байты TIFF в байты JPEG?

1

Решение

В настоящее время расширение GD не поддерживает загрузку изображений в формате TIFF. Ты можешь использовать Imagick расширение вместо:

try {
$im = new Imagick();
$im->readImageBlob($tiff_bytes);
$im->setFormat('JPEG');
file_put_contents('test.jpeg', $im->getImageBlob());
} catch (Exception $e) {
trigger_error($e->getMessage(), E_USER_ERROR);
}

В приведенном выше коде $tiff_bytes является двоичной строкой изображения TIFF.

Кроме того, вы можете установить официальные инструменты командной строки, сохраните изображение TIFF в файловую систему и преобразуйте его в JPEG, используя следующую команду:

convert file.jpg file.tiff

Существует несколько способов выполнить команду оболочки в PHP. я предпочитаю exec() для случаев, когда мне не нужно много контроля над исполнением, и proc_open() когда мне нужен полный контроль над содержимым файловых дескрипторов, т.е. в большинстве случаев.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]