Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по вёрстке » Белый фон у картинки

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


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

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

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


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

lutskboy
Эксперт

lutskboy - 16 июля 2014 16:51 -

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

sa22-91
Юзер

sa22-91 - 16 июля 2014 17:35 -

Блин. Как?!

rocksmart
Юзер

rocksmart - 16 июля 2014 17:46 -

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

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

sa22-91
Юзер

sa22-91 - 16 июля 2014 18:01 -

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

rocksmart
Юзер

rocksmart - 16 июля 2014 18:05 -

engine/classes/thumb.class.php

sa22-91
Юзер

sa22-91 - 16 июля 2014 20:13 -

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

FastFud
Юзер

FastFud - 16 июля 2014 20:29 -

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

sa22-91
Юзер

sa22-91 - 16 июля 2014 20:42 -

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

FastFud
Юзер

FastFud - 16 июля 2014 20:46 -

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

sa22-91
Юзер

sa22-91 - 16 июля 2014 20:56 -

Ничего не вышло, вот так я сделала:
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 - 16 июля 2014 21:02 -

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 - 16 июля 2014 21:05 -

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

FastFud
Юзер

FastFud - 16 июля 2014 21:08 -

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

sa22-91
Юзер

sa22-91 - 16 июля 2014 21:09 -

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

FastFud
Юзер

FastFud - 16 июля 2014 21:17 -

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

FastFud
Юзер

FastFud - 16 июля 2014 21:26 -

Или так еще попробуйте:
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 - 16 июля 2014 23:18 -

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

sa22-91
Юзер

sa22-91 - 16 июля 2014 23:40 -

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

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

FastFud
Юзер

FastFud - 17 июля 2014 00:18 -

Пример что я дал выше для 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 - 17 июля 2014 15:28 -

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

sa22-91
Юзер

sa22-91 - 18 июля 2014 00:15 -

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

FastFud
Юзер

FastFud - 18 июля 2014 01:26 -

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

sa22-91
Юзер

sa22-91 - 18 июля 2014 03:03 -

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

FastFud
Юзер

FastFud - 18 июля 2014 03:12 -

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

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

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

наверх