Перейти к публикации

Не поддерживает прозрачные изображения


Рекомендованные сообщения

DLE Не поддерживает прозрачные изображения (PNG & GIF)

Я писал уже давно об этой проблеме, еще не зафиксировано

Почему я решил сам, как можно исправить (DLE 8.2)

Вот:

Файл:

classes/thumb.class
Найти:
 $this->img['des'] = imagecreatetruecolor($nw, $nh);
Добавить ниже:

     	if ( ( $this->img['format'] == "GIF" ) or ( $this->img['format'] == "PNG" ) ) {


         $trnprt_indx = imagecolortransparent( $this->img['src'] );


			if (($trnprt_indx ) > 254) $trnprt_indx = 254;


    	    if ( $trnprt_indx >= 0 ) {

          		$trnprt_color   = imagecolorsforindex ( $this->img['src'], $trnprt_indx );

  		  		$trnprt_indx    = imagecolorallocate ( $this->img['des'], $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue'] );

 		  		imagefill ( $this->img['des'], 0, 0, $trnprt_indx );

          		imagecolortransparent ( $this->img['des'], $trnprt_indx );

      	 	} 


 		elseif ( $this->img['format'] == "PNG" ) {


          imagealphablending ( $this->img['des'], false );

          $color = imagecolorallocatealpha ( $this->img['des'], 0, 0, 0, 127 );

          imagefill ( $this->img['des'], 0, 0, $color );

          imagesavealpha ( $this->img['des'], true );


      }

 	}
Найти:
$this->img['des'] = imagecreatetruecolor( $this->img['lebar_thumb'], $this->img['tinggi_thumb'] );
Добавить ниже:

  	if ( ( $this->img['format'] == "GIF" ) or ( $this->img['format'] == "PNG" ) ) {


         $trnprt_indx = imagecolortransparent( $this->img['src'] );

		  if (($trnprt_indx ) > 254) $trnprt_indx = 254;

    	    if ( $trnprt_indx >= 0 ) {

          		$trnprt_color   = imagecolorsforindex ( $this->img['src'], $trnprt_indx );

  		  		$trnprt_indx    = imagecolorallocate ( $this->img['des'], $trnprt_color['red'], $trnprt_color['green'], $trnprt_color['blue'] );

 		  		imagefill ( $this->img['des'], 0, 0, $trnprt_indx );

          		imagecolortransparent ( $this->img['des'], $trnprt_indx );

      	 	} 


 		elseif ( $this->img['format'] == "PNG" ) {


          imagealphablending ( $this->img['des'], false );

          $color = imagecolorallocatealpha ( $this->img['des'], 0, 0, 0, 127 );

          imagefill ( $this->img['des'], 0, 0, $color );

          imagesavealpha ( $this->img['des'], true );


      }

 	} 

Все... :)

Изменено пользователем gosu
Ссылка на сообщение
Поделиться на других сайтах

Не совсем понял, зачем это вообще надо? :unsure:

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

У кого чёрный фон, чтобы при вставки картинки небыло белой пустоты, будет прозрачность.

Я правильно понял?

Ссылка на сообщение
Поделиться на других сайтах

PaSSoR, да. Можна еще проще, прицепить в шаблон pngFix, но он работает только для png, часто использую при верстке с png картинками.

Ссылка на сообщение
Поделиться на других сайтах

Можна еще проще, прицепить в шаблон pngFix

не уверен, что это прокатит, т.к. там в самом изображении будет потеряна информация. Хотя опять же - не уверен, это скорее из общих соображений.

Ссылка на сообщение
Поделиться на других сайтах

Совершенно о разных вещах говорите.

Одно дело при вёрстке отсутствие поддержки канала альфа-прозрачности ПНГ у Internet Explorer (Ради которого и сделан pngFix) и отсутствие прозрачности при пересохранении картинки.

Ссылка на сообщение
Поделиться на других сайтах

Все версии имеют этот недостаток,

При изменении размера прозрачным изображения (GIF, PNG) фон заменяется на темный цвет.

Demo:

исходных изображений (GIF & PNG) с прозрачной части:

f8a521faf36b57c2416d416b4bc1ce372g.jpg

DLE стандартный класс изображений ( Crop, Resize ):

74c5f8e8ca015473c470e40f57db3e732g.jpg

все тестовые изображения (ZIP):

http://www.mediafire.com/file/tmemunmgyzv/IMAGES_.rar

Изменено пользователем gosu
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...