Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
54
Task/Bitmap-Histogram/PHP/bitmap-histogram.php
Normal file
54
Task/Bitmap-Histogram/PHP/bitmap-histogram.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
define('src_name', 'input.jpg'); // source image
|
||||
define('dest_name', 'output.jpg'); // destination image
|
||||
|
||||
$img = imagecreatefromjpeg(src_name); // read image
|
||||
|
||||
if(empty($img)){
|
||||
echo 'Image could not be loaded!';
|
||||
exit;
|
||||
}
|
||||
|
||||
$black = imagecolorallocate($img, 0, 0, 0);
|
||||
$white = imagecolorallocate($img, 255, 255, 255);
|
||||
$width = imagesx($img);
|
||||
$height = imagesy($img);
|
||||
|
||||
$array_lum = array(); // for storage of luminosity of each pixel
|
||||
$sum_lum = 0; // total sum of luminosity
|
||||
$average_lum = 0; // average luminosity of whole image
|
||||
|
||||
for($x = 0; $x < $width; $x++){
|
||||
for($y = 0; $y < $height; $y++){
|
||||
// read pixel value
|
||||
$color = imagecolorat($img, $x, $y);
|
||||
$r = ($color >> 16) & 0xFF;
|
||||
$g = ($color >> 8) & 0xFF;
|
||||
$b = $color & 0xFF;
|
||||
// save pixel luminosity in temporary array
|
||||
$array_lum[$x][$y] = ($r + $g + $b);
|
||||
// add pixel luminosity to sum
|
||||
$sum_lum += $array_lum[$x][$y];
|
||||
}
|
||||
}
|
||||
|
||||
// calculate average luminosity
|
||||
$average_lum = $sum_lum / ($width * $height);
|
||||
|
||||
for($x = 0; $x < $width; $x++){
|
||||
for($y = 0; $y < $height; $y++){
|
||||
// pixel is brighter than average -> set white
|
||||
// else -> set black
|
||||
if($array_lum[$x][$y] > $average_lum){
|
||||
imagesetpixel($img, $x, $y, $white);
|
||||
}
|
||||
else{
|
||||
imagesetpixel($img, $x, $y, $black);
|
||||
}
|
||||
}
|
||||
}
|
||||
// save black and white image to dest_name
|
||||
imagejpeg($img, dest_name);
|
||||
|
||||
if(!file_exists(dest_name)){
|
||||
echo 'Image not saved! Check permission!';
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue