#php
Вопрос:
Я пытаюсь удалить фон с изображения и сделать его прозрачным. Много искал и нашел несколько отличных ответов от SO. К сожалению, мои навыки в PHP ограничены.
Вот код, который я пробовал.
$_filename='images-main/images/IM-Chrome Wallpaper.jpg';
$_backgroundColour='0,0,0';
$_img = imagecreatefrompng($_filename);
$_backgroundColours = explode(',', $_backgroundColour);
$_removeColour = imagecolorallocate($_img, (int)$_backgroundColours[0], (int)$_backgroundColours[1], (int)$_backgroundColours[2]);
imagecolortransparent($_img, $_removeColour);
imagesavealpha($_img, true);
$_transColor = imagecolorallocatealpha($_img, 0, 0, 0, 127);
imagefill($_img, 0, 0, $_transColor);
imagepng($_img, $_filename);
Я не смог это проверить, так как понятия не имею, как воспроизвести изображение, которое стало прозрачным из кода (если это так).
Может ли кто-нибудь поделиться своим опытом в тестировании этого кода и, возможно, указать мне направление, в котором я могу научиться писать код, который не использует плагины для создания прозрачного изображения?
Спасибо
Ответ №1:
Поскольку вам нужна только одноцветная прозрачность, самый простой способ-определить белый цвет с помощью imagecolortransparent()
$img = imagecreatefromstring($your_image);
$white = imagecolorallocate($img, 255, 255, 255);
imagecolortransparent($img, $white);
header('Content-Type: image/png');
imagepng($img, $file_name);
imagedestroy($img);
Комментарии:
1. Братан, как повторить прозрачное изображение. Не могли бы вы, пожалуйста, дать мне полный код.. Спасибо.
2.
imagepng
отобразит изображение в браузере3.
$img = imagecreatefromstring('images-main/images/IM-Chrome Wallpaper.jpg'); $white = imagecolorallocate($img, 255, 255, 255); imagecolortransparent($img, $white); header('Content-Type: image/png'); imagepng($img, $file_name); imagedestroy($img);
Я сделал это, в браузере ничего не отразилось..