💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 图片转素描 ```php $image_path = "1.jpg"; // $image_path="2.png"; $im_gray = imagecreatefromjpeg($image_path); $width = imagesx($im_gray); $height = imagesy($im_gray); //对图像使用过滤器 imagefilter($im_gray, IMG_FILTER_GRAYSCALE); //用于创建画布 $im_invert = imagecreatetruecolor($width, $height); //在画布中绘制图像 imagecopy($im_invert, $im_gray, 0, 0, 0, 0, $width, $height); //对图像使用过滤器 imagefilter($im_invert, IMG_FILTER_NEGATE); imagefilter($im_invert, IMG_FILTER_GAUSSIAN_BLUR); //这个算法最后再给出 $image = color_dodge_blend($im_gray, $im_invert, $width, $height); header('Content-Type: image/jpeg'); //设置图片类型,同样如果想生成gif或者png图象,要替换成相应的头 imagejpeg($image); //输出图象,如果是gif就用imagegif,如果是png就用imagepng…… imagedestroy($image); function color_dodge($mask, $image) { $GAUSS_COUNT = 10; $COLOR_STEP = 30; $result = ($image === 255) ? $image : min(255, (($mask << 8 ) / (255 - $image))); //$result = ($result <= 210) ? 0 : $result; // var_dump($result,$COLOR_STEP);die; $result = (int) ($result / $COLOR_STEP) * $GAUSS_COUNT; return $result; } function kmax1($array) { return array_search(max($array), $array); } function color_dodge_blend($source, $layer, $width, $height) { //用于创建画布 $image = imagecreatetruecolor($width, $height); $color_array = array(); for ($x = 0; $x < $width; $x++) { for ($y = 0; $y < $height; $y++) { //计算灰度 $rgb = ImageColorAt($source, $x, $y); $r = ($rgb >> 16) & 0xFF; $g = ($rgb >> 8) & 0xFF; $b = $rgb & 0xFF; $rgb2 = ImageColorAt($layer, $x, $y); $r2 = ($rgb2 >> 16) & 0xFF; $g2 = ($rgb2 >> 8) & 0xFF; $b2 = $rgb2 & 0xFF; $r = color_dodge($r, $r2); $g = color_dodge($g, $g2); $b = color_dodge($b, $b2); $rgb = ($r << 16) | ($g << 8) | $b; $color_array[$rgb] = key_exists($rgb, $color_array) ? $color_array[$rgb] + 1 : 1; //在指定的坐标处绘制像素。 imagesetpixel($image, $x, $y, $rgb); } } $background = kmax1($color_array); for ($x = 0; $x < $width; $x++) { for ($y = 0; $y < $height; $y++) { //获取颜色 $rgb = ImageColorAt($image, $x, $y); if ($rgb === $background) { //在指定的坐标处绘制像素。 imagesetpixel($image, $x, $y, 0xFFFFFF); } } } return $image; } ```