Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- **
- * Estimate image sharpnes based on color
- * similarity in pixels in a grid.
- *
- * @param Imagick $img
- * @return float
- */
- function GetImageSharpness($img)
- {
- $w = $img->getImageWidth();
- $h = $img->getImageHeight();
- $grid = $w / 9;
- $maximum = 0;
- for ($x = $grid / 2; $x <= $w - $grid / 2; $x += $grid) {
- $pixel = $img->getImagePixelColor($x, $grid / 2)->getColor();
- $r = $pixel['r'];
- $g = $pixel['g'];
- $b = $pixel['b'];
- $v0 = floor(0.35 * $r + 0.50 * $g + 0.15 * $b);
- for ($y = $grid / 2 + 1; $y <= $h - $grid / 2; $y++) {
- $pixel = $img->getImagePixelColor($x, $y)->getColor();
- $r = $pixel['r'];
- $g = $pixel['g'];
- $b = $pixel['b'];
- $v = floor(0.35 * $r + 0.50 * $g + 0.15 * $b);
- if ($maximum < abs($v - $v0)) {
- $maximum = abs($v - $v0);
- $xmax = $x;
- $ymax = $y;
- }
- $v0 = $v;
- }
- }
- for ($y = $grid / 2; $y <= $h - $grid / 2; $y += $grid) {
- $pixel = $img->getImagePixelColor($grid / 2, $y)->getColor();
- $r = $pixel['r'];
- $g = $pixel['g'];
- $b = $pixel['b'];
- $v0 = floor(0.35 * $r + 0.50 * $g + 0.15 * $b);
- for ($x = $grid / 2 + 1; $x <= $w - $grid / 2; $x++) {
- $pixel = $img->getImagePixelColor($x, $y)->getColor();
- $r = $pixel['r'];
- $g = $pixel['g'];
- $b = $pixel['b'];
- $v = floor(0.35 * $r + 0.50 * $g + 0.15 * $b);
- if ($maximum < abs($v - $v0)) {
- $maximum = abs($v - $v0);
- $xmax = $x;
- $ymax = $y;
- }
- $v0 = $v;
- }
- }
- $maxv = 0;
- $minv = 255;
- for ($x = $xmax - 4; $x <= $xmax + 4; $x++) {
- for ($y = $ymax - 4; $y <= $ymax + 4; $y++) {
- $pixel = $img->getImagePixelColor($x, $y)->getColor();
- $r = $pixel['r'];
- $g = $pixel['g'];
- $b = $pixel['b'];
- $v = floor(0.35 * $r + 0.50 * $g + 0.15 * $b);
- if ($v > $maxv) $maxv = $v;
- if ($v < $minv) $minv = $v;
- }
- }
- return round(($maximum / (15 + $maxv - $minv)) * 27000 / 255, 2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement