При уменьшении картинки появляется черная рамка

Тема в разделе "PHP", создана пользователем danneo, 10 апр 2016.

Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.506
    Симпатии:
    115
    На основе картинки создаю 3 маленьких копии: 110х110, 175х175, 400х400.
    Среднее изображение получается с полосой по верхнему краю, иногда еще и слева полоса, черного цвета. Зависит от размеров. Но зависимость пока не пойму.
    Маленькая и большая картинка нормальные.
    Делаю на основе класса DLE (thumb.class.php). Делаю через метод $thumb->size_auto(110х110). Т.е. ресайз и обрезка.
    Как можно решить проблему?
     
  2. norman_by

    norman_by Постоялец

    Регистр.:
    28 июн 2011
    Сообщения:
    69
    Симпатии:
    22
    формат небось png . Почитай про особенности отображения png - у меня такая фигня на джумле была, когда картинки ресайзились движком.
     
  3. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.506
    Симпатии:
    115
    точно! Как решается?
    Хотя в DLE это уже предусмотрено, насколько я понял:
    PHP:
    if ( $this->img['format'] == "PNG" ) {
                
    imagealphablending$this->img['des'], false);
                
    imagesavealpha$this->img['des'], true);
            }
     
  4. norman_by

    norman_by Постоялец

    Регистр.:
    28 июн 2011
    Сообщения:
    69
    Симпатии:
    22
    программно - хз) я руками ресайзил. Надо разбираться в особенностях генерирования прозрачного пнг
     
  5. Relimeyt

    Relimeyt Создатель

    Регистр.:
    3 май 2012
    Сообщения:
    19
    Симпатии:
    5
    Тут 2 варианта:
    - Размер итогового изображения не совпадает с размером вставляемой в него картинки, проверьте все размеры, нужно что бы они совпадали
    - Кроп по чёрной рамке, если устраивает итоговая картинка
     
  6. denverkurt

    denverkurt Denve® Нарушитель

    Регистр.:
    23 дек 2013
    Сообщения:
    741
    Симпатии:
    440
    возможно по краям картинки полупрозрачный слой, который из-за ресайза просвечивает черным
     
  7. warg

    warg Постоялец

    Регистр.:
    26 июн 2007
    Сообщения:
    125
    Симпатии:
    139
    у GD иногда бывают проблемы с альфа каналами gif и png, это вроде как зависит от того как было создано исходное изображение.
    в таких случаях обычно просто восстанавливают прозрачность
    PHP:
    if ( $this->img['format'] == "PNG" ) {
       
    imagecolortransparent($this->img['des'], imagecolorallocatealpha($this->img['des'], 000127));
       
    imagealphablending($this->img['des'], false);
       
    imagesavealpha($this->img['des'], true);
     }
     
  8. mayvas

    mayvas Писатель

    Регистр.:
    15 апр 2016
    Сообщения:
    3
    Симпатии:
    0
    Скорее всего формат png, попробуй изменить формат
     
  9. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.506
    Симпатии:
    115
    чет не помогает. У меня прозрачность то восстанавливает, но вот рамка есть
    medium_39211463555738.png
     
  10. aleksey74

    aleksey74 Создатель

    Регистр.:
    10 авг 2015
    Сообщения:
    29
    Симпатии:
    5
    Мне кажется проблема в родительском элементе, и формате файла. Посмотрите, куда сама по себе картинка "вставляется", возможно там что-то не то! Хотя, могу ошибаться.