Files
krk-litvinov.cz/lob2011/imagelightnessat.func.php
Jan Tojnar 0ad86228e9 Merge in old tojnar.cz/krk (mostly) as is
The SupportIT server www.tojnar.cz is hosted on is being decommissioned.
To make the migration faster, we will just copy the current state
and convert it to Hakyll incrementally.

This mostly imports the tree as is minus accidentally misplaced files.
Additionally, the following changes were made:

- line separators were converted using dos2unix
- file encodings were changed from windows-1250 to utf-8
- highslide and related files are now loaded from root instead of per-gallery copy
- uppercase JPG extensions were changed to lowercase

remove private
2022-01-19 19:05:40 +01:00

47 lines
1.5 KiB
PHP

<?php
/* Computes the lightness of a pixel. Lightness is used in HSL notation, as well
* as in various operations on images. This function returns a normalized value
* for lightness between 0 and 1, inclusive (0.0 being black, 1.0 being white).
*
* double imagelightnessat(resource img, int x, int y)
* img An open image resource to operate on (true color or palette)
* x, y The coordinates of the pixel to work on
*
* by Jed Smith <?php $u = "jed"; $d = "bz"; printf("<%s@%s.%s>", $u, $u, $d) ?>
*/
function imagelightnessat($img, $x, $y)
{
if(!is_resource($img))
{
trigger_error("imagelightnessat(): supplied argument is not a valid "
. "Image resource", E_USER_WARNING);
return 0.0;
}
$c = @imagecolorat($img, $x, $y);
if($c === false) return false;
if(imageistruecolor($img))
{
$red = ($c >> 16) & 0xFF;
$green = ($c >> 8) & 0xFF;
$blue = $c & 0xFF;
}
else
{
$i = imagecolorsforindex($img, $c);
$red = $i['red'];
$green = $i['green'];
$blue = $i['blue'];
}
$m = min($red, $green, $blue);
$n = max($red, $green, $blue);
/* Because RGB isn't normalized in GD, we divide by 510 here.
* Lightness = (Max(RGB) + Min(RGB)) / 2
* But that's assuming red, green, and blue are 0 through 1 inclusive.
* Red, green, and blue are actually 0-255 (255 + 255 = 510).
*/
$lightness = (double)(($m + $n) / 510.0);
return($lightness);
}
?>