/** * Desaturate * * @param resource $image Image GD resource * @param int $percent Level of desaturization. * @return resource|null */ public static function desaturate($image, $percent = 100) { // Determine percentage $percent = Helper::percent($percent); $width = imagesx($image); $height = imagesy($image); if ($percent === 100) { self::grayscale($image); } else { // Make a desaturated copy of the image $newImage = imagecreatetruecolor($width, $height); imagealphablending($newImage, false); imagecopy($newImage, $image, 0, 0, 0, 0, $width, $height); imagefilter($newImage, IMG_FILTER_GRAYSCALE); // Merge with specified percentage Helper::imageCopyMergeAlpha($image, $newImage, array(0, 0), array(0, 0), array($width, $height), $percent); return $newImage; } return null; }