>  기사  >  백엔드 개발  >  PHP 버전 특성화 이미지

PHP 버전 특성화 이미지

WBOY
WBOY원래의
2016-07-25 09:01:52902검색
看到这位老兄的帖子来的兴趣 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<$maxGray 1;$i ){
  21. $color = 255-round(200/$maxGray)*$i 55;
  22. $gray[$i] = imagecolorallocate($txtImage,$color,$color,$color);
  23. }
  24. //绘制字符
  25. for($y=0;$y<$rawImgHeigh;$y ){
  26. for($x=0;$x<$rawImgWidth;$x ){
  27. Imagechar($txtImage,1,$x*6,$y*9,$txt[rand(0,10)],$gray[$grayData[$x][$y]]);
  28. }
  29. }
  30. //创建最终图像
  31. $Image = ImageCreate($rawImgWidth*10,$rawImgHeigh*10);
  32. //拉伸图像
  33. imagecopyresampled($Image, $txtImage, 0, 0, 0, 0,$rawImgWidth*10,$rawImgHeigh*10,$rawImgWidth*6,$rawImgHeigh*9);
  34. //定义文件头
  35. header('Content-type: image/png');
  36. //输出图像
  37. ImagePNG($Image);
  38. //销毁图像
  39. ImageDestroy($Image);
  40. /*
  41. 获取灰度值
  42. */
  43. function getGrayData($mImage,$mImgWidth,$mImgHeigh){
  44. for($mY=0;$mY<$mImgHeigh;$mY ){
  45. for($mX=0;$mX<$mImgWidth;$mX ){
  46. $mRGB = Imagecolorat($mImage, $mX, $mY);
  47. $mR = ($mRGB >> 16) & 0xFF;
  48. $mG = ($mRGB >> 8) & 0xFF;
  49. $mB = $mRGB & 0xFF;;
  50. $mGrayData[$mX][$mY] = ($mR * 19595 $mG * 38469 $mB * 7472) >> 16;
  51. }
  52. }
  53. return $mGrayData;
  54. }
  55. ?>
复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.