Функции PHP JPEG не работают - PullRequest
       19

Функции PHP JPEG не работают

2 голосов
/ 13 августа 2010

Кажется, что любые функции PHP, работающие с JPEG, не работают на моем сервере.

Этот код:

<?php
$im = imagecreatetruecolor(120, 20);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  'A Simple Text String', $text_color);
header('Content-type: image/jpeg');
imagejpeg($im);
imagedestroy($im);
?>

создает пустой файл.

Использование функции GIF или PNG создаст изображение, содержащее текст «Простая текстовая строка», как и ожидалось.

Это:

$im = imagecreatefromjpeg("test.jpg");

возвращает

Warning: imagecreatefromjpeg() [function.imagecreatefromjpeg]: 'test.jpg' is not a valid JPEG file in /path/to/test.php on line 2

phpinfo () показывает:

gd
GD Support  enabled
GD Version  2.0 or higher
FreeType Support    enabled
FreeType Linkage    with freetype
FreeType Version    2.3.9
T1Lib Support   enabled
GIF Read Support    enabled
GIF Create Support  enabled
JPG Support     enabled
PNG Support     enabled
WBMP Support    enabled 

И веб-сервер может читать любые соответствующие файлы.

Функции GIF и PNG работают нормально, как и ожидалось.

Есть идеи?

EDIT:

Нашел это в моем файле журнала ошибок Apache:

gd-jpeg: JPEG library reports unrecoverable error: Wrong JPEG library version: library is 80, caller expects 62

Ответы [ 3 ]

6 голосов
/ 16 августа 2010

Ваш журнал ошибок ясно показывает, что ваш PHP скомпилирован с / требует libjpeg версии 62, а библиотека на вашем сервере - версия 80.

Либо установите правильную версию libjpeg, либо перекомпилируйтеgd / php.

0 голосов
/ 24 января 2019

Ответ, который работал для меня, заключался в том, чтобы обойти изображение в целом и представить его как строку.

Я попытаюсь сделать это стандартным способом, но если это не сработает, попробуйте это как строку

      $src = imagecreatefromjpeg($file);
      if (!$src) {
      $src = imagecreatefromstring(file_get_contents($file));
      }

Очевидно, есть некоторые проблемы с более старыми версиями или комбинациями GD и PHP.

В моем случае у меня было изображение, использующее более новую версию / сжатие JPEG 7, я думаю.

0 голосов
/ 13 августа 2010

Похоже, что файл test.jpg не существует или имеет неправильные заголовки типов файлов (например, если кто-то переименует test.png в test.jpg, он все равно будет иметь заголовки .png)Попробуйте создать новый файл test.jpg с помощью программы для редактирования изображений и посмотрите, работает ли он.

...