亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

PHP實現中文圓形印章特效

2024-05-04 23:36:34
字體:
來源:轉載
供稿:網友

心血來潮,寫了個圓形印章生成器,字體的弧形旋轉頗費功夫??偹阈Ч€不錯,代碼存檔。

方法一:

 

 
  1. <?php 
  2. /* 
  3. * 中文圓形印章類 
  4. * @author lkk/lianq.net 
  5. * @create on 10:03 2012-5-29 
  6. * @example: 
  7. * $seal = new circleSeal('你我他坐站走東西南北中',75,6,24,0,0,16,40); 
  8. * $seal->doImg(); 
  9. */ 
  10.  
  11. class circleSeal { 
  12. private $sealString; //印章字符 
  13. private $strMaxLeng; //最大字符長度 
  14. private $sealRadius; //印章半徑 
  15. private $rimWidth; //邊框厚度 
  16. private $innerRadius; //內圓半徑 
  17. private $startRadius; //五角星半徑 
  18. private $startAngle; //五角星傾斜角度 
  19. private $backGround; //印章顏色 
  20. private $centerDot; //圓心坐標 
  21. private $img; //圖形資源句柄 
  22. private $font; //指定的字體 
  23. private $fontSize; //指定字體大小 
  24. private $width; //圖片寬度 
  25. private $height; //圖片高度 
  26. private $points; //五角星各點坐標 
  27. private $charRadius; //字符串半徑 
  28. private $charAngle; //字符串傾斜角度 
  29. private $spacing; //字符間隔角度 
  30.  
  31. //構造方法 
  32. public function __construct($str ='', $rad = 75, $rmwidth = 6, $strad = 24, $stang = 0, $crang = 0, $fsize = 16, $inrad =0){ 
  33. $this->sealString = empty($str) ? '印章測試字符串' : $str; 
  34. $this->strMaxLeng = 12; 
  35. $this->sealRadius = $rad; 
  36. $this->rimWidth = $rmwidth; 
  37. $this->startRadius = $strad; 
  38. $this->startAngle = $stang; 
  39. $this->charAngle = $crang; 
  40. $this->centerDot = array('x'=>$rad, 'y'=>$rad); 
  41. $this->font = dirname(__FILE__) .'/simkai.ttf'
  42. $this->fontSize = $fsize; 
  43. $this->innerRadius = $inrad; //默認0,沒有 
  44. $this->spacing = 1; 
  45.  
  46. //創建圖片資源 
  47. private function createImg(){ 
  48. $this->width = 2 * $this->sealRadius; 
  49. $this->height = 2 * $this->sealRadius; 
  50. $this->img = imagecreate($this->width, $this->height); 
  51. imagecolorresolvealpha($this->img,255,255,255,127); 
  52. $this->backGround = imagecolorallocate($this->img,255,0,0); 
  53.  
  54. //畫印章邊框 
  55. private function drawRim(){ 
  56. for($i=0;$i<$this->rimWidth;$i++){ 
  57. imagearc($this->img,$this->centerDot['x'],$this->centerDot['y'],$this->width - $i,$this->height - $i,0,360,$this->backGround); 
  58.  
  59. //畫內圓 
  60. private function drawInnerCircle(){ 
  61. imagearc($this->img,$this->centerDot['x'],$this->centerDot['y'],2*$this->innerRadius,2*$this->innerRadius,0,360,$this->backGround); 
  62.  
  63. //畫字符串 
  64. private function drawString(){ 
  65. //編碼處理 
  66. $charset = mb_detect_encoding($this->sealString); 
  67. if($charset != 'UTF-8'){ 
  68. $this->sealString = mb_convert_encoding($this->sealString, 'UTF-8''GBK'); 
  69.  
  70. //相關計量 
  71. $this->charRadius = $this->sealRadius - $this->rimWidth - $this->fontSize; //字符串半徑 
  72. $leng = mb_strlen($this->sealString,'utf8'); //字符串長度 
  73. if($leng > $this->strMaxLeng) $leng = $this->strMaxLeng; 
  74. $avgAngle = 360 / ($this->strMaxLeng); //平均字符傾斜度 
  75.  
  76. //拆分并寫入字符串 
  77. $words = array(); //字符數組 
  78. for($i=0;$i<$leng;$i++){ 
  79. $words[] = mb_substr($this->sealString,$i,1,'utf8'); 
  80. $r = 630 + $this->charAngle + $avgAngle*($i - $leng/2) + $this->spacing*($i-1); //坐標角度 
  81. $R = 720 - $this->charAngle + $avgAngle*($leng-2*$i-1)/2 + $this->spacing*(1-$i); //字符角度 
  82. $x = $this->centerDot['x'] + $this->charRadius * cos(deg2rad($r)); //字符的x坐標 
  83. $y = $this->centerDot['y'] + $this->charRadius * sin(deg2rad($r)); //字符的y坐標 
  84. imagettftext($this->img, $this->fontSize, $R, $x, $y, $this->backGround, $this->font, $words[$i]); 
  85. }  
  86.  
  87. //畫五角星 
  88. private function drawStart(){ 
  89. $ang_out = 18 + $this->startAngle; 
  90. $ang_in = 56 + $this->startAngle; 
  91. $rad_out = $this->startRadius; 
  92. $rad_in = $rad_out * 0.382; 
  93. for($i=0;$i<5;$i++){ 
  94. //五個頂點坐標 
  95. $this->points[] = $rad_out * cos(2*M_PI/5*$i - deg2rad($ang_out)) + $this->centerDot['x']; 
  96. $this->points[] = $rad_out * sin(2*M_PI/5*$i - deg2rad($ang_out)) + $this->centerDot['y']; 
  97.  
  98. //內凹的點坐標 
  99. $this->points[] = $rad_in * cos(2*M_PI/5*($i+1) - deg2rad($ang_in)) + $this->centerDot['x']; 
  100. $this->points[] = $rad_in * sin(2*M_PI/5*($i+1) - deg2rad($ang_in)) + $this->centerDot['y']; 
  101. imagefilledpolygon($this->img, $this->points, 10, $this->backGround); 
  102.  
  103. //輸出 
  104. private function outPut(){ 
  105. header('Content-type:image/png'); 
  106. imagepng($this->img); 
  107. imagedestroy($this->img); 
  108.  
  109. //對外生成 
  110. public function doImg(){ 
  111. $this->createImg(); 
  112. $this->drawRim(); 
  113. $this->drawInnerCircle(); 
  114. $this->drawString(); 
  115. $this->drawStart(); 
  116. $this->outPut(); 

方法二:

 

 
  1. <?php 
  2. @$hos=iconv("GBK""UTF-8", $_GET["hos"]); 
  3. if(!isset($hos)) 
  4. exit; 
  5.  
  6. $im=ImageCreate(150,150); 
  7. $gray=ImageColorResolveAlpha($im,200,200,200,127); 
  8. $red=ImageColorAllocate($im,230,150,150); 
  9.  
  10. for($i=0;$i<6;$i++) 
  11. ImageArc($im,75,75,148-$i,148-$i,0,360,$red); 
  12.  
  13. $stock='C:/WINDOWS/Fonts/simkai.ttf'
  14. $point="★"
  15. $size=30; 
  16. ImageTTFText($im,$size,0,72-$size/2,72+$size/2,$red,$stock,$point); 
  17.  
  18. $a=75;$b=-75;//中心點坐標 
  19. $r=65;$m=40;//半徑,角度 
  20. $size=16;//字體大小 
  21. $r=$r-$size; 
  22.  
  23. $word=array(); 
  24. $max=18; 
  25. $count=mb_strlen($hos,'utf8'); 
  26. if($count>$max)$count=$max; 
  27. if($count>12) 
  28. $m=floor(360/$count); 
  29. else if($count>5) 
  30. $m-=$count; 
  31.  
  32. for($i=0;$i<$count;$i++) 
  33. $word[]=mb_substr($hos,$i,1,'utf8'); 
  34.  
  35. $j=floor($count/2); 
  36. if($j!=$count/2) 
  37. for($i=$j;$i>=0;$i--) 
  38. $arc=$m*($j-$i)+$size/2; 
  39. $x=round($r*cos((90+$arc)*M_PI/180))+$a; 
  40. $y=-1*(round($r*sin((90+$arc)*M_PI/180))+$b); 
  41. if($arc<10)$arc=0;  
  42. ImageTTFText($im,$size,$arc,$x,$y,$red,$stock,$word[$i]); 
  43. $arc=$m*($j-$i)-$size/2; 
  44. $x=round($r*cos((90-$arc)*M_PI/180))+$a; 
  45. $y=-1*(round($r*sin((90-$arc)*M_PI/180))+$b); 
  46. if($arc<10)$arc=0;  
  47. ImageTTFText($im,$size,-$arc,$x,$y,$red,$stock,$word[$j+$j-$i]); 
  48. else 
  49. $j=$j-1; 
  50. for($i=$j;$i>=0;$i--) 
  51. $arc=$m/2+$m*($j-$i)+$size/2; 
  52. $x=round($r*cos((90+$arc)*M_PI/180))+$a; 
  53. $y=-1*(round($r*sin((90+$arc)*M_PI/180))+$b); 
  54. ImageTTFText($im,$size,$arc,$x,$y,$red,$stock,$word[$i]);  
  55. $arc=$m/2+$m*($j-$i)-$size/2; 
  56. $x=round($r*cos((90-$arc)*M_PI/180))+$a; 
  57. $y=-1*(round($r*sin((90-$arc)*M_PI/180))+$b); 
  58. ImageTTFText($im,$size,-$arc,$x,$y,$red,$stock,$word[$j+$j+1-$i]); 
  59.  
  60. header('Content-Type:image/png'); 
  61. ImagePNG($im); 
  62. ?> 

以上所述就是本文的全部內容了,希望大家能夠喜歡

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一av网| 久久久久女教师免费一区| 国产精品三级网站| 96pao国产成视频永久免费| 欧美成人免费播放| 68精品久久久久久欧美| 国产欧美韩国高清| 日韩av在线免费观看一区| 亚洲精品国产综合久久| 国产做受69高潮| 欧美成人免费播放| 久久6精品影院| 久久久伊人日本| 在线观看欧美日韩| www.欧美三级电影.com| 国产日韩在线精品av| 国产精品精品视频| 色噜噜亚洲精品中文字幕| 欧美老少做受xxxx高潮| 久久久精品电影| 亚洲视频电影图片偷拍一区| 68精品久久久久久欧美| 国产视频精品免费播放| 欧美大片网站在线观看| 日韩av电影中文字幕| 午夜精品福利视频| 国产日韩欧美在线播放| 97视频网站入口| 欧美乱大交xxxxx| 欧美一级淫片videoshd| 亚洲精品国产美女| 一本色道久久88亚洲综合88| 久久久久久av| 欧美韩国理论所午夜片917电影| 久久久久亚洲精品成人网小说| 性视频1819p久久| 国产免费一区二区三区在线能观看| 久久国产精彩视频| 2019中文字幕全在线观看| 最近2019中文字幕一页二页| 国精产品一区一区三区有限在线| 国产精品av免费在线观看| 51色欧美片视频在线观看| 中文字幕亚洲无线码a| 欧美性在线观看| 国产精品激情av电影在线观看| 亚洲国产日韩欧美在线动漫| 亚洲成色www8888| 久青草国产97香蕉在线视频| 日本最新高清不卡中文字幕| 亚洲国产婷婷香蕉久久久久久| 欧美亚洲国产精品| 日韩黄在线观看| 久久久久久久999精品视频| 91黑丝在线观看| 91免费高清视频| 久久久91精品国产| 亚洲社区在线观看| 亚洲国产精品久久久久秋霞不卡| 2018国产精品视频| 亚洲香蕉在线观看| 奇米成人av国产一区二区三区| 国产大片精品免费永久看nba| 最新国产成人av网站网址麻豆| 懂色aⅴ精品一区二区三区蜜月| 国产精品中文字幕在线观看| 亚洲国产成人精品久久久国产成人一区| 亚州av一区二区| 久久大大胆人体| 国产精品香蕉在线观看| 亚洲乱码国产乱码精品精| 亚洲国产成人在线播放| 色综合久久久888| 国产精品白丝jk喷水视频一区| 亚洲精品国产精品国自产在线| 欧美激情2020午夜免费观看| 亚洲大胆人体在线| 51精品在线观看| 午夜欧美大片免费观看| 久久99久久99精品免观看粉嫩| 亚洲免费福利视频| 国产精品第二页| 亚洲新中文字幕| 久久久999国产精品| 亚洲欧洲在线视频| 成人国产精品色哟哟| 欧美激情欧美狂野欧美精品| 国产日产欧美a一级在线| 国外日韩电影在线观看| 久久精品成人欧美大片| 欧美日韩一区二区在线播放| 欧美日韩日本国产| 成人免费午夜电影| 国产噜噜噜噜久久久久久久久| 久久久国产91| 在线成人激情视频| 国产日本欧美在线观看| 国产欧美中文字幕| 亚洲福利视频在线| 亚洲乱码一区二区| 欧美日韩中文在线观看| 97精品伊人久久久大香线蕉| 午夜精品一区二区三区在线播放| 81精品国产乱码久久久久久| 中文字幕在线日韩| 亚洲免费一级电影| yellow中文字幕久久| 日韩在线激情视频| 黄色一区二区在线| 国产精品久久久久久久久久久久久久| 亚洲美女喷白浆| 亚洲欧美综合精品久久成人| 热99久久精品| 欧美视频二区36p| 久热精品视频在线观看| 成人免费福利在线| 国产玖玖精品视频| 日韩在线观看网址| 国产成人免费91av在线| 中文字幕久久久| 久久久精品久久| 91国产高清在线| 精品国产91久久久| 亚洲精品日韩丝袜精品| 亚洲综合日韩中文字幕v在线| 91亚洲人电影| 亚洲理论在线a中文字幕| 色琪琪综合男人的天堂aⅴ视频| 欧美国产激情18| 国产日韩在线免费| 欧美又大粗又爽又黄大片视频| 国产91久久婷婷一区二区| 亚洲精品小视频| 中国日韩欧美久久久久久久久| 5278欧美一区二区三区| 91麻豆国产语对白在线观看| 亚洲欧美激情精品一区二区| 国产精品亚洲综合天堂夜夜| 色妞一区二区三区| 亚洲国产日韩欧美综合久久| 国产精品高清在线| 成人h视频在线| 久久久久久伊人| 国产精品久久久久av免费| 欧美精品videosex牲欧美| 国产一区二区三区精品久久久| 亚洲人成电影网站色xx| 国产精品久久久久久久电影| 久久久精品视频在线观看| 一区二区欧美久久| 亚洲日韩欧美视频一区| 国产亚洲精品久久久久动| 久久精品男人天堂| 美女视频黄免费的亚洲男人天堂| 成人久久久久久久| 国产视频在线观看一区二区| 成人av在线亚洲| 成人网欧美在线视频| 人人爽久久涩噜噜噜网站| 国产精品黄页免费高清在线观看| 91国产视频在线播放| 麻豆成人在线看| 久久乐国产精品| 日韩精品一区二区三区第95|