龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP版 字符化图像

时间:2014-07-19 15:04来源:网络整理 作者:网络 点击:
分享到:
PHP版 字符化图像 图像默认放大10倍,这样看的比较清楚...... PNG,GIF,JPG我都试了下,都能正常字符化 :)[代码片段(59行)]

图像默认放大10倍,这样看的比较清楚...... PNG,GIF,JPG我都试了下,都能正常字符化 :)

<?php
$txt =array('A','B','C','D','E','F','G','H','I','J','K');
//加载原始图像
$rawImage = ImageCreateFromGIF('logo.gif');
//获取原始图像宽高
$rawImgWidth = ImagesX($rawImage);
$rawImgHeigh = ImagesY($rawImage);
//获取原始图像灰度
$grayData = getGrayData($rawImage,$rawImgWidth,$rawImgHeigh);
//销毁图像
ImageDestroy($rawImage);
//创建文字图像
$txtImage = ImageCreate($rawImgWidth*6,$rawImgHeigh*9);
//新图像背景色
imagecolorallocate($txtImage,0,0,0);
//获取最大灰度
for($i=0;$i<count($grayData);$i++){
    $maxGrayArray[$i] = max($grayData[$i]);
}
$maxGray = max($maxGrayArray);
//设置灰度对应颜色
for($i=0;$i<$maxGray+1;$i++){
    $color = 255-round(200/$maxGray)*$i+55;
    $gray[$i] = imagecolorallocate($txtImage,$color,$color,$color);
}
//绘制字符
for($y=0;$y<$rawImgHeigh;$y++){
    for($x=0;$x<$rawImgWidth;$x++){
        Imagechar($txtImage,1,$x*6,$y*9,$txt[rand(0,10)],$gray[$grayData[$x][$y]]);
    }
}
//创建最终图像
$Image = ImageCreate($rawImgWidth*10,$rawImgHeigh*10);
//拉伸图像
imagecopyresampled($Image, $txtImage, 0, 0, 0, 0,$rawImgWidth*10,$rawImgHeigh*10,$rawImgWidth*6,$rawImgHeigh*9); 
//定义文件头
header('Content-type: image/png');
//输出图像
ImagePNG($Image);
//销毁图像
ImageDestroy($Image);

/*
    获取灰度值
*/
function getGrayData($mImage,$mImgWidth,$mImgHeigh){
    for($mY=0;$mY<$mImgHeigh;$mY++){
        for($mX=0;$mX<$mImgWidth;$mX++){
            $mRGB = Imagecolorat($mImage, $mX, $mY);
            $mR = ($mRGB >> 16) & 0xFF;
            $mG = ($mRGB >> 8) & 0xFF;
            $mB = $mRGB & 0xFF;;
            $mGrayData[$mX][$mY] = ($mR * 19595 + $mG * 38469 + $mB * 7472) >> 16;
        }
    }
    return $mGrayData;
}
?>
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接