1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

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

Тема в разделе "Virtuemart", создана пользователем RIPP3R_X, 18 май 2012.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
  1. RIPP3R_X

    RIPP3R_X Создатель

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

    Как пофиксить этот баг?
    Помогите, пожалуйста!
     
  2. vitmar

    vitmar Постоялец

    Регистр.:
    27 апр 2012
    Сообщения:
    84
    Симпатии:
    40
    Везде, где я видел описание этой проблемы, в конечном итоге все рекомендуют отказаться от jpeg и использовать jpg. Такой вариант не подойдет?
     
  3. RIPP3R_X

    RIPP3R_X Создатель

    Регистр.:
    10 июн 2007
    Сообщения:
    13
    Симпатии:
    0
    Я бы так и сделал. Но заказчик упёрся и говорит чтобы пофиксил.
     
  4. hjet

    hjet Создатель

    Регистр.:
    5 июн 2012
    Сообщения:
    23
    Симпатии:
    7
    это фиксится за 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$fileout100);
    break;
    Наслаждайтесь! :smmne:
     
    wolfzp, RedRabbit, Menro и ещё 1-му нравится это.
  5. hjet

    hjet Создатель

    Регистр.:
    5 июн 2012
    Сообщения:
    23
    Симпатии:
    7
    и не забывайте, что с выходом нового обновления эта красота потрется :) можно еще с .htaccess'ом попробовать перенаправлять, но имхо это совершенный изврат и я даже фантазировать не хочу, как это осуществить :crazy:
     
  6. alexandr.datsko

    alexandr.datsko Создатель

    Регистр.:
    20 июн 2012
    Сообщения:
    45
    Симпатии:
    7
    не совсем, надо еще перед
    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 файлики)
     
    wolfzp нравится это.
  7. labiatum

    labiatum Писатель

    Регистр.:
    17 июн 2013
    Сообщения:
    2
    Симпатии:
    0
  8. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.627
    Симпатии:
    1.330
  9. labiatum

    labiatum Писатель

    Регистр.:
    17 июн 2013
    Сообщения:
    2
    Симпатии:
    0
    Не могу пока найти. Может кто с ходу знает. Я так понимаю, что за эту работу отвечает img2thumb.php. Плиз, плиз, уже весь мозг плывет.
     
  10. Вадя

    Вадя Писатель

    Регистр.:
    28 фев 2013
    Сообщения:
    1
    Симпатии:
    0
    В 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;
    Вроде работает.