将一张image图片转化为字符串的形式

将一张image图片转化为字符串的形式。(运行笔记中的代码需要先安装 php_imagick 扩展

/**
* 图片转换为字符图
* @param string $imagePath 图片地址
* @param int $width x轴方向缩放比例
* @param int $height y轴方向缩放比例
* @return string 生成的字符串图
*/
function img2String($imagePath,$width=1,$height=1)
{//检查是否安装 php_imagick 扩展if(!extension_loaded("imagick")){exit("请先安装 imagick 模块");}$imagick = new \Imagick(realpath($imagePath));//将生成的imagick对象转化为一个像素迭代器,可以从该迭代器中获取没个像素的 rgb 的值。不知道什么是rgb的请问度娘$imageIterator = new \ImagickPixelIterator($imagick);$str='O80GCLft*+;:,. ';foreach ($imageIterator as $rows => $pixels) {if($rows%$width == 1 || $width == 1){echo "\n";foreach ($pixels as $column => $pixel) {if($column%$height == 1 || $height == 1){//灰度计算公式  某个像素点的灰度值 = 红色值*0.3 + 绿色值 * 0.59 + 蓝色值 * 0.11$gray = $pixel->getColor()['r']*0.3 + $pixel->getColor()['g']*0.59 + $pixel->getColor()['b']*0.11;//由于 rgb 三原色的数值范围在 [0,255] 所以求出的灰度值的范围也是 [0,255],所以我们计算像素的 "饱和度" = 灰度值/255;$r = $gray/255;//根据像素的 "饱和度" 选择合适的字符$offset=(int)ceil($r*(strlen($str)-1));    if($offset==(strlen($str)-1)){echo " ";}else{echo $str[$offset];  }}         }$imageIterator->syncIterator();}    }
}img2String('AMT服务中心.PNG',2,1);


程序员交流qq群:782974737 点击加入


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部