Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP版 字符化图像

PHP版 字符化图像

WBOY
WBOYasal
2016-07-25 09:01:52846semak imbas
看到这位老兄的帖子来的兴趣 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. ?>
复制代码


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn