VM 2.x маниатюры jpeg в Virtuemart 2

RIPP3R_X

Создатель
Регистрация
10 Июн 2007
Сообщения
13
Реакции
0
Здравствуйте.
Версия Joomla 2.5.4, VM 2.0.4.
Столкнулся с такой проблемой:
При загрузке в товар или категорию VM картинку формата jpeg, миниатюра загруженного изображения пропадает.
Заметил, что миниатюра создаётся, НО, к имени после разрешения файла (.jpeg) дописывается .jpg и получается такое:
имя_картинки.jpeg.jpg

Как пофиксить этот баг?
Помогите, пожалуйста!
 
Везде, где я видел описание этой проблемы, в конечном итоге все рекомендуют отказаться от jpeg и использовать jpg. Такой вариант не подойдет?
 
Везде, где я видел описание этой проблемы, в конечном итоге все рекомендуют отказаться от jpeg и использовать jpg. Такой вариант не подойдет?
Я бы так и сделал. Но заказчик упёрся и говорит чтобы пофиксил.
 
Я бы так и сделал. Но заказчик упёрся и говорит чтобы пофиксил.

это фиксится за 5 минут :) лезем в administrator\components\com_virtuemart\helpers\img2thumb.php где в начале файла пишут, что он делает jpg превьюшки

строка 305 и 306:
PHP:
if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".jpg")
    $fileout .= ".jpg";
добавляем еще одно выражение к условию, что бы превьюшка jpeg не создавалось:

PHP:
if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".jpg" && strtolower(substr($fileout,strlen($fileout)-9,9))!=".jpeg.jpg")
после 306 строки добавляем новое условие, касательно jpeg:
PHP:
if (strtolower(substr($fileout,strlen($fileout)-9,9))==".jpeg.jpg")
$fileout = preg_replace('/\.jpg$/i','',$fileout);
последняя строка удаляет из имени файла ".jpg"


итого кейс в переключателе выглядит так:
PHP:
case "jpg":
if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".jpg" && strtolower(substr($fileout,strlen($fileout)-9,9))!=".jpeg.jpg")
$fileout .= ".jpg";
if (strtolower(substr($fileout,strlen($fileout)-9,9))==".jpeg.jpg")
$fileout = preg_replace('/\.jpg$/i','',$fileout);
return imagejpeg($new_img, $fileout, 100);
break;
Наслаждайтесь! :smmne:
 
и не забывайте, что с выходом нового обновления эта красота потрется :) можно еще с .htaccess'ом попробовать перенаправлять, но имхо это совершенный изврат и я даже фантазировать не хочу, как это осуществить :crazy:
 
не совсем, надо еще перед
PHP:
case "jpg":
добавить
PHP:
case "jpeg":
чтобы было в итоге
PHP:
case "jpeg":
case "jpg":
    if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".jpg" && strtolower(substr($fileout,strlen($fileout)-5,5))!=".jpeg")
       $fileout .= ".jpg";
    $quality = 89;
    return imagejpeg($new_img, $fileout, $quality);
break;
потому как в этой функции немного ранее параметр
PHP:
$type
по которому определяется тип изображения, берется так
PHP:
$pathinfo['extension']
а значит надо учесть, что у нас будут и jpg и jpeg файлики)
 
Если есть кто живой:))) Как убрать черный фон появляющийся при создании миниатюры? Пример: Для просмотра ссылки Войди или Зарегистрируйся
 
Не могу пока найти. Может кто с ходу знает. Я так понимаю, что за эту работу отвечает img2thumb.php. Плиз, плиз, уже весь мозг плывет.
 
В VirtueMart 3 сделал так - добавил 3-й кейс.

Лезем в administrator\components\com_virtuemart\helpers\img2thumb.php

После
Код:
case "jpg":
if (strtolower(substr($fileout,strlen($fileout)-4,4))!=".jpg")
$fileout .= ".jpg";
$quality = VmConfig::get('img_quality', 89);
return imagejpeg($new_img, $fileout, $quality);
break;

СТАВИМ

Код:
case "jpeg":
if (strtolower(substr($fileout,strlen($fileout)-5,5))!=".jpeg")
$fileout .= ".jpeg";
$quality = VmConfig::get('img_quality', 89);
return imagejpeg($new_img, $fileout, $quality);
break;

Вроде работает.
 
Назад
Сверху