No lo consigo con esto, se supone que los únicos colores que tendrían que aparecer en la imagen una vez tratada serian el blanco y el negro, pero me aparece el negro y el gris; ¡¡¡donde tendría que ir blanco, aparece gris!!!, el negro sí funciona bien.
Using perl Syntax Highlighting
use GD::Image;
use strict;
sub convertJPEGtoMonochromePNG{
my $infile = shift;
my $outfile = shift;
my $image = GD::Image->new($infile);
(my $width, my $height) = $image->getBounds();
my $myImage = new GD::Image($width,$height);
my $Black = $myImage->colorAllocate(0,0,0);
my $White = $myImage->colorAllocate(255,255,255);
for (my $y=0;$y<$height;$y++){
for (my $x=0;$x<$width;$x++){
my $index = $image->getPixel($x,$y);
(my $r, my $g, my $b) = $image->rgb($index);
my $gs = (($r*0.299)+($g*0.587)+($b*0.114));
if ( $gs > 150 ){
$image->setPixel($x,$y,$White);
}
else{
$image->setPixel($x,$y,$Black);
}
}
}
my $png_data = $image->png;
open (PNG,">$outfile") || die "Error saving $outfile !!!";
binmode PNG;
print PNG $png_data;
close PNG;
}
my $input = 'imgl.jpg';
my $output = 'byn.png';
&convertJPEGtoMonochromePNG($input,$output );
use strict;
sub convertJPEGtoMonochromePNG{
my $infile = shift;
my $outfile = shift;
my $image = GD::Image->new($infile);
(my $width, my $height) = $image->getBounds();
my $myImage = new GD::Image($width,$height);
my $Black = $myImage->colorAllocate(0,0,0);
my $White = $myImage->colorAllocate(255,255,255);
for (my $y=0;$y<$height;$y++){
for (my $x=0;$x<$width;$x++){
my $index = $image->getPixel($x,$y);
(my $r, my $g, my $b) = $image->rgb($index);
my $gs = (($r*0.299)+($g*0.587)+($b*0.114));
if ( $gs > 150 ){
$image->setPixel($x,$y,$White);
}
else{
$image->setPixel($x,$y,$Black);
}
}
}
my $png_data = $image->png;
open (PNG,">$outfile") || die "Error saving $outfile !!!";
binmode PNG;
print PNG $png_data;
close PNG;
}
my $input = 'imgl.jpg';
my $output = 'byn.png';
&convertJPEGtoMonochromePNG($input,$output );
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Using perl Syntax Highlighting
my $gs = (($r*0.299)+($g*0.587)+($b*0.114));
if ( $gs > 150 )
...... #blanco aqui
else
..... #negro aqui
if ( $gs > 150 )
...... #blanco aqui
else
..... #negro aqui
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Con esto lo que consigo es discernir si tendría que poner blanco o negro en el pixel que analizo.
Bueno alguna ayudita, creo que el problema tiene que andar por aquí
Using perl Syntax Highlighting
Ahí creo el color blanco, puede que esté creando el gris en vez del blanco y por eso donde se supone que tiene que ir blanco va gris, pero no consigo nada.
¡¡¡Me sigue saliendo la imagen en negro y gris!!!
¡¡Una ayuda!!