Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 471 Просмотров
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
Никак не найду в чем может быть проблема. Делаю уменьшенные картинки через JImage методом http://ссылка вырезана, так как домен распространяет вирусы/blog/joomla/rabota-s-izobrazheniyami-v-joomla-jimage.html Собственно работает все кроме прозрачности.

Может кто-то подскажет как это правильно сделать через JImage

нашел решение напрямую через GD
Код
imagealphablending($newImg, false);
imagesavealpha($newImg,true);

это работает, но как подобное дать JImage? может не знаю о каком-то методе или переопределять toFile надо?
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Напрямую через GD делается так (см. то, что в условии для png):
Код
        $fill = '#FFFFFF';
        $img = imagecreatetruecolor($cw, $ch);
        imagefill($img, 0, 0, $fill);
        imagecolortransparent($img, $fill);
        if($ext=='png'){
            imagealphablending($img, false);
            $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
            imagefill($img, 0, 0, $transparent);
            imagesavealpha($img,true);
            imagealphablending($img, true);
        }
Здесь вы создаете прозрачный цвет и заливаете им (превращаете в него) все пиксели, совпадающие по цвету с пикселем в координатах [0, 0] (можете выбрать другую точку при желании)
Это точно работает.

Для метода с использованием JImage у меня прописано так:
Код
                $properties = JImage::getImageFileProperties($src);
                // Расчет ширины и высоты в режиме автоподбора
                if(!$width && $height) $width = $properties->width / $properties->height * $height;
                elseif($width && !$height) $height = $properties->height / $properties->width * $width;
                elseif(!$width && !$height){
$height = $properties->height;
$width = $properties->width;
}
$imgObject = new JImage($src);
                $imgObject->setThumbnailGenerate(true);
$imgObject->resize($width, $height, false, JImage::SCALE_FIT);
$imgObject->filter('backgroundfill', array('color' => $fill));
                $imgObject->toFile($dst, null, array('quality' => $quality));
Но не уверен (потому что не вижу), что тут поддерживается прозрачность. Возможно, забил за ненадобностью.
« Последнее редактирование: 02.03.2020, 12:43:22 от sivers »
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

platonische

  • Давно я тут
  • 523
  • 2 / 1
  • Парусные экспедиции vk.com/tc670
$imgObject->filter('backgroundfill', array('color' => $fill));
Эта строка решает частично вопрос. Но принципиально она просто закрашивает фон, а поддержать прозрачность.

Но все-равно спасибо - уже не черное.
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Попробуйте первый вариант, который на чистом пхп+гд - тот способ точно работает и проверен неоднократно.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Jimage + Watermark

Автор Stake1988

Ответов: 5
Просмотров: 1135
Последний ответ 18.02.2015, 02:25:57
от Stake1988