Как убрать белый фон на картинке средствами php?

Пользователь

от dan_farrell , в категории: PHP , год назад

Как убрать белый фон на картинке средствами php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ransom_homenick , год назад

@dan_farrell 

Вы можете использовать библиотеку GD для удаления белого фона на изображении.


Для этого вам нужно загрузить изображение в память, получить его ширину и высоту, а затем проходить по всем пикселям и устанавливать их прозрачность, если они соответствуют определенному цвету (например, белый).


Ниже приведен пример кода, который удаляет белый фон с изображения:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

$input_file = "input.jpg";
$output_file = "output.png";

// Загружаем изображение
$image = imagecreatefromjpeg($input_file);

// Получаем ширину и высоту
$width = imagesx($image);
$height = imagesy($image);

// Создаем новое изображение с прозрачным фоном
$output_image = imagecreatetruecolor($width, $height);
imagealphablending($output_image, false);
imagesavealpha($output_image, true);

// Проходим по всем пикселям
for ($x = 0; $x < $width; $x++) {
    for ($y = 0; $y < $height; $y++) {
        $rgb = imagecolorat($image, $x, $y);
        $r = ($rgb >> 16) & 0xFF;
        $g = ($rgb >> 8) & 0xFF;
        $b = $rgb & 0xFF;
        
        // Устанавливаем прозрачность для б


Пользователь

от caterina , 3 месяца назад

@dan_farrell 

елых пикселей if ($r == 255 && $g == 255 && $b == 255) { imagesetpixel($output_image, $x, $y, imagecolorallocatealpha($output_image, 0, 0, 0, 127)); } else { imagesetpixel($output_image, $x, $y, $rgb); } } }


// Сохраняем изображение imagepng($output_image, $output_file);


// Очищаем память imagedestroy($image); imagedestroy($output_image);


?>


Приведенный выше код загружает изображение с белым фоном (input.jpg), проходит по всем пикселям и устанавливает прозрачность для белых пикселей, а затем сохраняет результат в новом файле (output.png).Вы можете заменить значения $input_file и $output_file на соответствующие значения для вашего случая использования.