texto imagen filtro codigo canva blanco php image imagefilter

php - imagen - codigo de filtro blanco canva



Cómo convertir una imagen a blanco y negro en PHP (8)

¿Cómo se puede convertir una imagen a blanco y negro en PHP?

No solo convertirlo en escala de grises sino también en cada píxel en blanco y negro.


Podrías desembolsar imagemagick, suponiendo que tu host lo soporte. ¿Qué función desea utilizar para decidir si un píxel debe ser negro o blanco?


Simplemente redondee el color de la escala de grises a negro o blanco.

float gray = (r + g + b) / 3 if(gray > 0x7F) return 0xFF; return 0x00;


Para cada píxel debe convertir de color a escala de grises: algo como $ gray = $ red * 0.299 + $ green * 0.587 + $ blue * 0.114; (Estos son factores de ponderación NTSC, existen otras ponderaciones similares. Esto imita la respuesta variable del ojo a diferentes colores).

Luego debe decidir sobre un valor de corte, generalmente la mitad del valor máximo de píxeles, pero dependiendo de la imagen, puede preferir un valor más alto (oscurecer la imagen) o reducirla (hacer que la imagen sea más brillante).

Simplemente al comparar cada píxel con el corte se pierden muchos detalles, es decir, las áreas oscuras grandes se vuelven completamente negras, por lo que para retener más información, puede oscilar. Básicamente, comience en la esquina superior izquierda de la imagen: para cada píxel, agregue el error (la diferencia entre el valor original y el valor final asignado) para los píxeles a la izquierda y arriba antes de comparar con el valor de corte.

Tenga en cuenta que hacer esto en PHP será muy lento: usted estaría mucho más adelante para encontrar una biblioteca que proporcione esto.


Usando la biblioteca php gd :

imagefilter($im, IMG_FILTER_GRAYSCALE); imagefilter($im, IMG_FILTER_CONTRAST, -100);

Verifique los comentarios de los usuarios en el enlace de arriba para más ejemplos.


$rgb = imagecolorat($original, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8 ) & 0xFF; $b = $rgb & 0xFF; $gray = $r + $g + $b/3; if ($gray >0xFF) {$grey = 0xFFFFFF;} else { $grey=0x000000;}


Esta función funciona como un encanto

public function ImageToBlackAndWhite($im) { for ($x = imagesx($im); $x--;) { for ($y = imagesy($im); $y--;) { $rgb = imagecolorat($im, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8 ) & 0xFF; $b = $rgb & 0xFF; $gray = ($r + $g + $b) / 3; if ($gray < 0xFF) { imagesetpixel($im, $x, $y, 0xFFFFFF); }else imagesetpixel($im, $x, $y, 0x000000); } } imagefilter($im, IMG_FILTER_NEGATE); }


Usando la biblioteca php gd:

imagefilter($im, IMG_FILTER_GRAYSCALE); imagefilter($im, IMG_FILTER_CONTRAST, 1000);


Si tiene la intención de hacerlo usted mismo, deberá implementar un algoritmo de difuminado . Pero como dice @jonni , ¿usar una herramienta existente sería mucho más fácil?