Invalid image type given

Serg1234

Заблокирован
Сообщения
70
Реакции
38
Баллы
8,115
При попытке перестраивания миниатюр вложений выходит ошибка:
Invalid image type given. Expects IMAGETYPE_XXX constant.

Bmp файлов нет, только jpg и png.

Как решить проблему?
 
Что-то я не уверен, что проблема тут в движке... Может с php у Вас что-то не так? Или какой-то сторонний плагин мешает перестроению, но угадать тут сложно.
 
Проблема возникла с теми вложениями, которые были получены с помощью плагина ConvertImageAll 3.1
После преобразования, все вложения отображались как ссылки "Показать вложение 3456".
По ссылке изображение при этом открывалось нормально. В браузере вложений отсутствовали миниатюры.
В папке дата все файлы миниатюр имели размер 0 байт, а в таблице xf_attachment_data были нули в thumbnail_width и thumbnail_height

Как я понимаю что-то произошло на стадии конвертирования и в изображениях теперь нет информации о типе, которую хочет получить функция getimagesize().
 
В логе ошибок что?

XenForo_Exception: Invalid image type given. Expects IMAGETYPE_XXX constant. - library/XenForo/Image/ImageMagick/Pecl.php:85

#0 [internal function]: XenForo_Image_ImageMagick_Pecl::createFromFileDirect('/var/www/forum/...', 6)
#1 /var/www/forum/library/XenForo/Image/Abstract.php(254): call_user_func(Array, '/var/www/forum/...', 6)
#2 /var/www/forum/library/XenForo/Deferred/AttachmentThumb.php(38): XenForo_Image_Abstract::createFromFile('/var/www/forum/...', 6)
#3 /var/www/forum/library/XenForo/Model/Deferred.php(256): XenForo_Deferred_AttachmentThumb->execute(Array, Array, 7.9999988079071, '')
#4 /var/www/forum/library/XenForo/Model/Deferred.php(390): XenForo_Model_Deferred->runDeferred(Array, 7.9999988079071, '', false)
#5 /var/www/forum/library/XenForo/Model/Deferred.php(335): XenForo_Model_Deferred->_runInternal(Array, NULL, '', false)
#6 /var/www/forum/library/XenForo/ControllerAdmin/Tools.php(159): XenForo_Model_Deferred->run(true, NULL, '', false)
#7 /var/www/forum/library/XenForo/FrontController.php(347): XenForo_ControllerAdmin_Tools->actionRunDeferred()
#8 /var/www/forum/library/XenForo/FrontController.php(134): XenForo_FrontController->dispatch(Object(XenForo_RouteMatch))
#9 /var/www/forum/admin.php(13): XenForo_FrontController->run()
#10 {main}

XenForo_Exception: Invalid image type given. Expects IMAGETYPE_XXX constant. - library/XenForo/Image/Gd.php:100

#0 [internal function]: XenForo_Image_Gd::createFromFileDirect('/var/www/forum/...', 6)
#1 /var/www/forum/library/XenForo/Image/Abstract.php(254): call_user_func(Array, '/var/www/forum/...', 6)
#2 /var/www/forum/library/XenForo/Deferred/AttachmentThumb.php(38): XenForo_Image_Abstract::createFromFile('/var/www/forum/...', 6)
#3 /var/www/forum/library/XenForo/Model/Deferred.php(256): XenForo_Deferred_AttachmentThumb->execute(Array, Array, 7.9999969005585, '')
#4 /var/www/forum/library/XenForo/Model/Deferred.php(390): XenForo_Model_Deferred->runDeferred(Array, 7.9999969005585, '', false)
#5 /var/www/forum/library/XenForo/Model/Deferred.php(335): XenForo_Model_Deferred->_runInternal(Array, NULL, '', false)
#6 /var/www/forum/library/XenForo/ControllerAdmin/Tools.php(159): XenForo_Model_Deferred->run(true, NULL, '', false)
#7 /var/www/forum/library/XenForo/FrontController.php(347): XenForo_ControllerAdmin_Tools->actionRunDeferred()
#8 /var/www/forum/library/XenForo/FrontController.php(134): XenForo_FrontController->dispatch(Object(XenForo_RouteMatch))
#9 /var/www/forum/admin.php(13): XenForo_FrontController->run()
#10 {main}
 
Опасный плагин ConvertImageAll 3.1, лучше бы оставил версию 2.8 и не обновлял его. Теперь не знаю даже, что делать с этими вложениями.

Главное все эти изображения открываются и в браузере и в фотошопе, где угодно, но не хотят конвертироваться в миниатюры.

Проверил на другом серваке. ConvertImageAll 3.1 бьет изображения.
 
Ну мне этот факт не был известен пока не побил себе вложения.
Ничего понять не могу.

Вот два файла через функцию getimagesize()

Array
(
[0] => 329
[1] => 90
[2] => 2
[3] => width="329" height="90"
[bits] => 8
[channels] => 3
[mime] => image/jpeg
)
Array
(
[0] => 1000
[1] => 588
[2] => 2
[3] => width="1000" height="588"
[bits] => 8
[channels] => 3
[mime] => image/jpeg
)

С первого не генерируется миниатюра со второго генерируется.
Первый получен через плагин ConvertImageAll 3.1, второй залит через форум как вложение.
Разницы не вижу никакой.

В обоих случаях [2] => 2 (IMAGETYPE_JPEG)


UPDATE 1

Нашел причину. Некоторые файлы как оказалось на самом деле имеют [2] => 6 (IMAGETYPE_BMP), а поскольку генерация миниатюр прекращается после первой же ошибки, все остальные вложения не имеют миниатюр и соответственно не работают как надо. Вложения не битые и ConvertImageAll тут не при чем. Всему виной классы xenforo для GD и ImageMagick.


UPDATE 2

library/XenForo/Image/Gd.php

public static function createFromFileDirect

Добавление этого решает все проблемы.

PHP:
case IMAGETYPE_BMP:
                    if (!function_exists('imagecreatefrompng'))
                    {
                        return false;
                    }
                    $image = imagecreatefrompng($fileName);
                    break;

И не важно, что файл bmp, а функция конвертирования взята для png. Всё прекрасно работает.
 
Последнее редактирование:
  • Мне нравится
Реакции: Hope
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу