Черный фон у изображений

Если картинка в png на прозрачном фоне, и на конце добавить .jpg то вебасист преобразует прозрачный фон в черный. Собственно очень нужен белый. Куда копать и как найти этот инструмент?

1 ответ

  • 1
    replicant 14 октября 2019 16:47 #

    Можно уточнение? Вы берете исходный файл допустим фото.png с прозрачностью и переименовываете его в фото.jpg и загружаете через движок на сайт. Так?

    • +1
      Сергей Кирьянов Сергей Кирьянов 14 октября 2019 17:01 #

      Исходный файл - примерно выглядит так на карточке товаров

      /wa-data/public/shop/products/79/76/17679/images/102165/102165.200.png


      если мы перейдем по /wa-data/public/shop/products/79/76/17679/images/102165/102165.200.png.jpg то сконвертирует в черный фон (причем довольно кривоватенько)

      • +2
        replicant replicant 15 октября 2019 13:04 #

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

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

        Вот что произошло с icons.png с прозрачностью, который был преобразован в jpg. Для наглядности сеточку Photoshop оставил на скрине. Иконки Youtube и Google+ пережались в такой фарш, что стало противно. Вокруг иконки RSS возник по углам оранжевый фон и сама иконка тоже превратилась в фарш из jpg-артефактов.

        Что-то мне подсказывает, что кроме решения черный фон или белый там ещё будет куча сюрпризов. Внимательное сравнение иконок до и после это демонстрирует.



        Изображение размеров 240х0 получилось на черном фоне и отвратительного качества, т.к. полупрозрачные области наследовали сплошной цвет от объекта. Замена фона на белый эту проблему не решит.

        При правильной конвертации будет всё более чем красиво и скриншот из специальной программы в данном случае это показывает.


        На мой взгляд для получения jpg из png с прозрачностью лучше использовать сторонний специализированный софт или более подходящие алгоритмы, чем заложены в WA, но речь немного не об этом.

        Мне показалось, что обнаружился баг в движке. Ошибка заключается вот в чем. Даже тогда, когда запрещено создание эскизов произвольных размеров, но при использовании PNG файлов для фото товара, генерацию JPG из PNG подобным методом это не останавливает. Т.е. JPG файлы можно генерировать по вызову по прямой ссылке, несмотря на запрет генерации эскизов произвольных размеров.

        Таким образом в магазинах, использующих PNG, можно вызвать генерацию большого объема JPG мусора, написав соответствующий скрипт для целевого нанесения вреда. В итоге файловая система будет завалена мусором.

        На скрине ниже видно какие файлы были созданы в итоге опытов.




        А теперь самое вкусное. Обратный рецепт тоже работает. Берем любой JPG из фото товара. Берем к нему URL вида /wa-data/public/shop/products/65/01/165/images/953/953.0x700.jpg и добавляем .png на конце, можно и .gif и даже .jpg  или .jpg.jpg запустить по кругу. В итоге получаем вот что

        Обратите внимание на размеры файлов PNG и GIF. Это жесть! Какой объем вкусный. Сиди и бомби магазины на хостингах от души. Получается любой магазин потенциально уязвим для такого вида переполнения файловой системы генерацией PNG, GIF и вторичных-третичных JPG из имеющихся JPG фотографий товара. Я проверял это на версиях от 6 до последней ШопСкрипт и на последней версии фреймворка.

        Разработчики, АУ? Проверьте догадку. Баг есть или это у меня с утра глюки? Может быть стоит оформить в виде отдельной темы данный пост?

        • +1
          Сергей Кирьянов Сергей Кирьянов 15 октября 2019 13:08 #

          Спасибо за развернутый ответ. Проверил все ваши наблюдения, все так и есть. И это огромнейшая проблема. Согласен что тут нужно передать это разработчикам!

          • +1
            replicant replicant 15 октября 2019 13:15 #

            Теперь меня "приступ паранойи" будет преследовать как минимум до вечера. :) Блин. Пойду сожру что-нибудь сладкое, чтобы отпустило.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите