Heim >Backend-Entwicklung >PHP-Tutorial >PHP版 字符化图像

PHP版 字符化图像

WBOY
WBOYOriginal
2016-07-25 09:01:52927Durchsuche
看到这位老兄的帖子来的兴趣 http://www.oschina.net/code/snippet_234517_15356

图像默认放大10倍,这样看的比较清楚......

测试用的是OSC的logo,大家看看效果如何
(图片被缩略了,新窗口打开这个地址看,2000*560的图 http://img.it-home.org/data/attachment/forum/2014pic/11033136_K1mt.png)


====================================================
PNG,GIF,JPG我都试了下,都能正常字符化 :) PHP版 字符化图像
  1. $txt =array('A','B','C','D','E','F','G','H','I','J','K');
  2. //加载原始图像
  3. $rawImage = ImageCreateFromGIF('logo.gif');
  4. //获取原始图像宽高
  5. $rawImgWidth = ImagesX($rawImage);
  6. $rawImgHeigh = ImagesY($rawImage);
  7. //获取原始图像灰度
  8. $grayData = getGrayData($rawImage,$rawImgWidth,$rawImgHeigh);
  9. //销毁图像
  10. ImageDestroy($rawImage);
  11. //创建文字图像
  12. $txtImage = ImageCreate($rawImgWidth*6,$rawImgHeigh*9);
  13. //新图像背景色
  14. imagecolorallocate($txtImage,0,0,0);
  15. //获取最大灰度
  16. for($i=0;$i $maxGrayArray[$i] = max($grayData[$i]);
  17. }
  18. $maxGray = max($maxGrayArray);
  19. //设置灰度对应颜色
  20. for($i=0;$i $color = 255-round(200/$maxGray)*$i+55;
  21. $gray[$i] = imagecolorallocate($txtImage,$color,$color,$color);
  22. }
  23. //绘制字符
  24. for($y=0;$y for($x=0;$x Imagechar($txtImage,1,$x*6,$y*9,$txt[rand(0,10)],$gray[$grayData[$x][$y]]);
  25. }
  26. }
  27. //创建最终图像
  28. $Image = ImageCreate($rawImgWidth*10,$rawImgHeigh*10);
  29. //拉伸图像
  30. imagecopyresampled($Image, $txtImage, 0, 0, 0, 0,$rawImgWidth*10,$rawImgHeigh*10,$rawImgWidth*6,$rawImgHeigh*9);
  31. //定义文件头
  32. header('Content-type: image/png');
  33. //输出图像
  34. ImagePNG($Image);
  35. //销毁图像
  36. ImageDestroy($Image);
  37. /*
  38. 获取灰度值
  39. */
  40. function getGrayData($mImage,$mImgWidth,$mImgHeigh){
  41. for($mY=0;$mY for($mX=0;$mX $mRGB = Imagecolorat($mImage, $mX, $mY);
  42. $mR = ($mRGB >> 16) & 0xFF;
  43. $mG = ($mRGB >> 8) & 0xFF;
  44. $mB = $mRGB & 0xFF;;
  45. $mGrayData[$mX][$mY] = ($mR * 19595 + $mG * 38469 + $mB * 7472) >> 16;
  46. }
  47. }
  48. return $mGrayData;
  49. }
  50. ?>
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn