php使用imagick将image图片转化为字符串模式
<?php/**
* 图片转换为字符图
* @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='zzzyk.com';
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('zzzyk.com.jpg',2,1);