imagefilter+ data:image/png


Dram
365

есть пример

// Применение очень мягкого эффекта рассеивания к изображению
imagefilter($logo, IMG_FILTER_SCATTER, 3, 5);

Как вместо logo вставить изображение <img src=»data:image/png;base64,’.base64_encode($imagedata).'»/> ?

Как ни пробую, получаю Warning: imagefilter() expects parameter 1 to be resource, string given


ArbNet

$logo = ImageCreateFromJpeg(‘image.png’);


Sitealert

Dram:
Как ни пробую

Вместо $logo не пробовал вставлять imagecreatefromstring ($imagedata) ?


Dram

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

$num = 'test';

$image = imagecreatetruecolor(50, 40);
$fon = imagecolorallocatealpha($image, 255, 255, 255, 127);
imagecolortransparent($image, $fon);
imagefill($image, 0, 0, $fon);
$text_color = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 4, 0, 0, $num, $text_color);
ob_start();
imagepng($image);
$imagedata = ob_get_contents();
ob_end_clean();
imagefilter(imagecreatefromstring ($imagedata), IMG_FILTER_SCATTER, 1, 5);
echo '<img src="data:image/png;base64,'.base64_encode($imagedata).'"/>';


Sitealert

Попробуй IMG_FILTER_GAUSSIAN_BLUR или IMG_FILTER_SELECTIVE_BLUR

imagefilter(imagecreatefromstring($imagedata), IMG_FILTER_SELECTIVE_BLUR);

Но ты выводишь вроде как не то. Нужно выводить не $imagedata, а ресурс изображения.


ArbNet

Dram, Вы доку читаете перед тем как вопросы задавать?

https://www.php.net/manual/ru/function.imagefilter.php

IMG_FILTER_COLORIZE: Альфа канал, значение между 0 и 127. 0 означает непрозрачность, 127 соответствует абсолютной прозрачности.


Dram

Sitealert, попробовал, без толку. Мне нужно сделать текст картинкой и его размыть. Что тогда если не $imagedata?

ArbNet, вообще не понял при чем тут прозрачность? Она как-то может мешать размытию? Поставил 0 — ничего не поменялось


Sitealert

$num = 'test';
$image = imagecreatetruecolor(50, 40);
$fon = imagecolorallocatealpha($image, 255, 255, 255, 127);
imagecolortransparent($image, $fon);
imagefill($image, 0, 0, $fon);
$text_color = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 4, 0, 0, $num, $text_color);
imagefilter($image, IMG_FILTER_SELECTIVE_BLUR);
ob_start();
imagepng($image);
$imagedata = ob_get_contents();
ob_end_clean();

echo '<img src="data:image/png;base64,'.base64_encode($imagedata).'"/>';

Проблема молотка.


Aisamiery

imagefilter(imagecreatefromstring ($imagedata), IMG_FILTER_SCATTER, 1, 5);

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

$num = ‘test’;
$image = imagecreatetruecolor(50, 40);
$fon = imagecolorallocatealpha($image, 255, 255, 255, 127);
imagecolortransparent($image, $fon);
imagefill($image, 0, 0, $fon);
$text_color = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 4, 0, 0, $num, $text_color);
imagefilter($image, IMG_FILTER_SCATTER, 1, 5);
ob_start();
imagepng($image);
$imagedata = ob_get_contents();
ob_end_clean();

echo ‘<img src=»data:image/png;base64,’.base64_encode($imagedata).'»/>’;


Dram

Sitealert, Aisamiery, спасибо!


SocFishing

Может быть вы сделаете размытие на CSS, может быть для вывода на сайте вам нужен блур. Так и ресурсы не будут тратиться вашего сервера.

https://jsfiddle.net/m2r3gz5o/

imagefilter+ data:image/png

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *