Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Все вопросы » Общие вопросы по вёрстке » Белый фон у картинки

Белый фон у картинки


     Все вопросы » Общие вопросы по вёрстке    2936

вопрос
Здравствуйте. Установила на сайт фотоальбомы, но проблема с добавлением картинок png с прозрачным фоном.
Если фон прозрачный, то при добавлении на сайт он становится чёрным, а когда скачиваешь, тоже чёрный.
Как сделать, чтобы фон и оставался прозрачным?
http://multall.ru/photo-id-5.html

Ответа пока нет


24 комментария

lutskboy
Эксперт

lutskboy - -

ето такая особенность работы класса уменьшения картинок thumb.class.php
нужно пошаманить над ним.

sa22-91
Юзер

sa22-91 - -

Блин. Как?!

rocksmart
Юзер

rocksmart - -

Попробуй поменять

//imagealphablending( $this->img['des'], false);  //старое
            
            imagealphablending( $this->img['des'],  true);//новое

sa22-91
Юзер

sa22-91 - -

Это в каком шаблоне?

rocksmart
Юзер

rocksmart - -

engine/classes/thumb.class.php

sa22-91
Юзер

sa22-91 - -

Не помогло.
Блин....что делать? Очень нужно это исправить!

FastFud
Юзер

FastFud - -

А этот модуль фотоальбомы использует стандартный thumb.class.php или нет ?

sa22-91
Юзер

sa22-91 - -

Похоже нет, наверное это: http://multall.ru/winxclub/6-avvfo.html
Тех поддержка этого модуля сказала, нужно искать в этом коде.

FastFud
Юзер

FastFud - -

Ну раз он то наверное, после
}elseif( $this->type == 'png' ) {(217) строка
поставить
imagealphablending($this->img, TRUE);

sa22-91
Юзер

sa22-91 - -

Ничего не вышло, вот так я сделала:
if( $this->type == 'jpg' || $this->type == 'jpeg' ){
            imagejpeg( $this->img, $save, $this->quality );
        }elseif( $this->type == 'png' ) {
        imagealphablending($this->img, TRUE);
            imagepng($this->img, $save );
        }elseif( $this->type == 'gif' ){
            imagegif( $this->img, $save );

И как был так и остался черный фон.

FastFud
Юзер

FastFud - -

imagealphablending($this->img, true);
imagesavealpha($this->img, true);
получится так:
function save( $save = '' ){
 if( $this->type == 'jpg' || $this->type == 'jpeg' ){
            imagejpeg( $this->img, $save, $this->quality );
        }elseif( $this->type == 'png' ) {
            imagealphablending($this->img, true);
            imagesavealpha($this->img, true);
            imagepng($this->img, $save );
        }elseif( $this->type == 'gif' ){
            imagegif( $this->img, $save );
        }

        imagedestroy( $this->img );
        if(is_resource($this->des)) {
            imagedestroy( $this->des );
        }
    }

sa22-91
Юзер

sa22-91 - -

Не получается. :(

FastFud
Юзер

FastFud - -

imagealphablending($this->img, false);
imagesavealpha($this->img, true);
и еще вы после этого добавляете новые картинки или смотрите на те-же ?))

sa22-91
Юзер

sa22-91 - -

Добавляю новые. Сейчас добавила гиф с прозрачным фоном, и у неё он прозрачный, а не черный.

FastFud
Юзер

FastFud - -

sa22-91, Зачем gif если вам png надо ?

FastFud
Юзер

FastFud - -

Или так еще попробуйте:
function save( $save = '' ){
    if( $this->type == 'jpg' || $this->type == 'jpeg' ){
        imagejpeg( $this->img, $save, $this->quality );
    }elseif( $this->type == 'png' ) {
        imagealphablending($this->img, false);
        $color = imagecolorallocatealpha($this->img, 0, 0, 0, 127);
        imagefill($this->img, 0, 0, $color);
        imagesavealpha($this->img, true);
        imagepng($this->img, $save );
    }elseif( $this->type == 'gif' ){
        imagegif( $this->img, $save );
    }
        imagedestroy( $this->img );
    if(is_resource($this->des)) {
        imagedestroy( $this->des );
    }
}

sa22-91
Юзер

sa22-91 - -

Гиф, просто для проверки, ведь она тоже имеет прозрачный фон.

sa22-91
Юзер

sa22-91 - -

Нет, превью картинки половина белая, остальная черная получается. При сохранении полностью черный фон.
Мне удалось сделать белый фон, так:
}elseif( $this->type == 'png'  || $this->type == 'png' ){
            imagepng($this->img, $save );

То есть добавила кусочек кода от jpeg: || $this->type == 'png' ){
Но как сделать, чтобы при сохранении был не белый фон, а прозрачный?

FastFud
Юзер

FastFud - -

Пример что я дал выше для png формата.
function save( $save = '' ){
    if( $this->type == 'jpg' || $this->type == 'jpeg' ){
        imagejpeg( $this->img, $save, $this->quality );
    }elseif( $this->type == 'png' ) {
        $color = imagecolorallocatealpha($this->img, 0, 0, 0, 127);
        imagefill($this->img, 0, 0, $color);
        imagealphablending($this->img, false);
        imagesavealpha($this->img, true);
        imagepng($this->img);
    }elseif( $this->type == 'gif' ){
        imagegif( $this->img, $save );
    }
        imagedestroy( $this->img );
    if(is_resource($this->des)) {
        imagedestroy( $this->des );
    }
}
или так
function save( $save = '' ){
    if( $this->type == 'jpg' || $this->type == 'jpeg' ){
        imagejpeg( $this->img, $save, $this->quality );
    }elseif( $this->type == 'png' || $this->type == 'png' ) {
        $color = imagecolorallocatealpha($this->img, 0, 0, 0, 127);
        imagefill($this->img, 0, 0, $color);
        imagealphablending($this->img, false);
        imagesavealpha($this->img, true);
        imagepng($this->img);
    }elseif( $this->type == 'gif' ){
        imagegif( $this->img, $save );
    }
        imagedestroy( $this->img );
    if(is_resource($this->des)) {
        imagedestroy( $this->des );
    }
}

sa22-91
Юзер

sa22-91 - -

Блин. Всё равно этот черный фон остаётся!
Может мы не в том месте смотрим?

sa22-91
Юзер

sa22-91 - -

Что, ни у кого такого не было?

FastFud
Юзер

FastFud - -

Нужно тестить!

sa22-91
Юзер

sa22-91 - -

Блин, я уже передумала на dle сайт делать. Зря только фотоальбом купила. И продать не кому... .

FastFud
Юзер

FastFud - -

Ну раз купили обратитесь в тех поддержку модуля, помочь должны, а если нет: skype: maximus5999 попробую помочь

Похожие вопросы

наверх