rendered paste bodysub process {
my $image = shift @_;
my $bmp = Image::BMP->new();
$bmp->open_file($image);
print $bmp->xy(3,3);
my $width = $bmp->{Width};
my $height = $bmp->{Height};
my $total_pixels = $width * $height;
# my $pixels[$width][$height];
my @pixels;
#Read it into an array
for my $x ($width) {
for my $y ($height) {
my @hsv = rgb_to_hsv(( $bmp->xy_rgb( $x, $y )));
print Dumper(@hsv);
$pixels[$x]->[$y] = \@hsv;
}
}
print Dumper(@pixels);
return ( $total_pixels, \@pixels );
}
sub rgb_to_hsv {
my ($r, $g, $b) = @_;
my ($max, $min) = (0, 255);
for ($r, $g, $b) { $max = $_ if $max < $_ }
for ($r, $g, $b) { $min = $_ if $min > $_ }
my ($h, $s, $v);
#H
my $denom = ($max - $min) * 6;
if ($denom == 0) {
$h = 0;
}
elsif ($max == $r) {
$h = ($g-$b) / $denom;
}
elsif ($max == $g) {
$h = ($b-$r) / $denom + 1/3;
}
else {
$h = ($r-$g) / $denom + 2/3;
}
$h *= 255;
$h += 255 * ($h < 0);
#S
if ($max == 0) {
$s = 0;
}
else {
$s = 255 - 255 * $min / $max;
}
#V
$v = $max;
return ($h, $s, $v);
}