欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Java版頸椎自動矯正圖

系統 1826 0

本來上周雙休日沒什么事情,準備干點遺留了很久的正經事,結果半途忍不住手賤看新聞,于是被11.28事件觸動,隨大流的針對棒子及棒子粉抽瘋了兩天。

沒想到到星期一上班脖子就不得勁,順便查了點資料,發現個山寨版的頸椎矯正圖,覺得挺有意思。

如下圖:

Java版頸椎自動矯正圖

于是回家后想到自己也做個玩。

問題是,咱爺們不說程序員吧,好歹也是個壘碼的,直接PS文字圖未免有礙觀瞻,于是抽空寫了個Java自動生成版的。

代碼如下:

  1. package org.test;

  2. import java.awt.AlphaComposite;
  3. import java.awt.Canvas;
  4. import java.awt.Color;
  5. import java.awt.Font;
  6. import java.awt.Frame;
  7. import java.awt.Graphics;
  8. import java.awt.Graphics2D;
  9. import java.awt.Image;
  10. import java.awt.RenderingHints;
  11. import java.awt.event.WindowAdapter;
  12. import java.awt.event.WindowEvent;
  13. import java.awt.image.BufferedImage;
  14. import java.io.File;
  15. import java.io.IOException;

  16. import javax.imageio.ImageIO;

  17. /**
  18. *Copyright2008
  19. *
  20. *LicensedundertheApacheLicense,Version2.0(the"License");youmaynot
  21. *usethisfileexceptincompliancewiththeLicense.Youmayobtainacopyof
  22. *theLicenseat
  23. *
  24. *http://www.apache.org/licenses/LICENSE-2.0
  25. *
  26. *Unlessrequiredbyapplicablelaworagreedtoinwriting,software
  27. *distributedundertheLicenseisdistributedonan"ASIS"BASIS,WITHOUT
  28. *WARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.Seethe
  29. *Licenseforthespecificlanguagegoverningpermissionsandlimitationsunder
  30. *theLicense.
  31. *
  32. *@projectloonframework
  33. *@authorchenpeng
  34. *@email:ceponline@yahoo.com.cn
  35. *@version0.1
  36. */
  37. public class MessageImage extends Canvas{

  38. /**
  39. *
  40. */
  41. private static final long serialVersionUID=1L;

  42. private BufferedImagefontImage;

  43. private Graphics2Dg2d;
  44. private ImagebackImage;
  45. final static private int WIDTH= 600 ;

  46. final static private int HEIGHT= 480 ;


  47. public MessageImage( final Stringmessages){

  48. fontImage= new BufferedImage(WIDTH,HEIGHT, 2 );
  49. g2d=fontImage.createGraphics();
  50. try {
  51. backImage=ImageIO.read( new File( "back.png" ));
  52. } catch (IOExceptione){
  53. e.printStackTrace();
  54. }
  55. g2d.drawImage(backImage, 0 , 0 , null );
  56. setAlpha(g2d, 0.7 );
  57. int size= 25 ;
  58. int newLine=(WIDTH/size)- 10 ;
  59. char []messageChars=messages.toCharArray();
  60. boolean d= true ;
  61. StringBuildersbr= new StringBuilder();
  62. int count= 0 ;
  63. int len=messageChars.length- 1 ;
  64. StringfontStyle= "幼圓" ;
  65. Colorcolor=Color.white;
  66. for ( int i= 0 ,j= 0 ;i<=len;i++,j++){
  67. sbr.append(messageChars[i]);
  68. if (j==newLine||(messageChars[i]== '/n' )){
  69. g2d.drawImage(createImageMessages( 1 , false ,sbr.toString(),
  70. color,fontStyle, 1 ,size,d),count+= 30 ,
  71. (HEIGHT-(sbr.length()*size))-(size* 4 ), null );
  72. d=!d;
  73. sbr.delete( 0 ,sbr.length());
  74. j= 0 ;
  75. } else if (i==len){
  76. g2d.drawImage(createImageMessages( 1 , false ,sbr.toString(),
  77. color,fontStyle, 1 ,size,d),count+= 30 ,
  78. (HEIGHT-(sbr.length()*size))-(size* 4 ), null );
  79. }
  80. }
  81. setAlpha(g2d, 0.6 );
  82. Stringmes= "Java版頸椎自動矯正圖" ;
  83. fontStyle= "華文新魏" ;
  84. size= 20 ;
  85. g2d.drawImage(createImageMessages( 0 , true ,mes,Color.red,fontStyle,
  86. 1 ,size, false ),WIDTH-(mes.length()*size)-(size* 2 ),
  87. HEIGHT-(size* 2 ), null );
  88. }

  89. /**
  90. *創建一組圖片文字
  91. *
  92. *@paramaspect
  93. *@paramisRow
  94. *@parammessages
  95. *@paramcolor
  96. *@paramname
  97. *@paramstyle
  98. *@paramsize
  99. *@paramd
  100. *@return
  101. */
  102. public static BufferedImagecreateImageMessages( final int aspect,
  103. final boolean isRow, final Stringmessages, final Colorcolor,
  104. final Stringname, final int style, final int size, final boolean d){
  105. final int flength=messages.length();
  106. final int nowSize=size*flength;
  107. BufferedImagefontImages;
  108. if (isRow)
  109. fontImages= new BufferedImage(nowSize,size, 2 );
  110. else
  111. fontImages= new BufferedImage(size,nowSize, 2 );
  112. Graphics2Dgraphics2d=fontImages.createGraphics();
  113. char []messageChars=messages.toCharArray();
  114. if (d){
  115. char []temp= new char [flength];
  116. for ( int i= 0 ,j=flength- 1 ;i<flength;i++,j--){
  117. temp[j]=messageChars[i];
  118. }
  119. messageChars=temp;
  120. }
  121. if (isRow)
  122. for ( int i= 0 ;i<flength;i++){
  123. graphics2d.drawImage(createImageMessage(aspect,
  124. messageChars[i],color,name,style,size,d),
  125. i*size, 0 , null );
  126. }
  127. else
  128. for ( int i= 0 ;i<flength;i++){
  129. graphics2d.drawImage(createImageMessage(aspect,
  130. messageChars[i],color,name,style,size,d), 0 ,i
  131. *size, null );
  132. }
  133. graphics2d.dispose();
  134. System.gc();
  135. return fontImages;
  136. }

  137. /**
  138. *創建單獨圖片文字
  139. *
  140. *@paramaspect
  141. *@parammessage
  142. *@paramcolor
  143. *@paramname
  144. *@paramstyle
  145. *@paramsize
  146. *@paramd
  147. *@return
  148. */
  149. public static BufferedImagecreateImageMessage( final int aspect,
  150. final char message, final Colorcolor, final Stringname,
  151. final int style, final int size, final boolean d){
  152. final int nowSize=size+ 1 ;
  153. BufferedImagefontImage= new BufferedImage(nowSize,nowSize, 2 );
  154. Graphics2Dgraphics2d=fontImage.createGraphics();
  155. graphics2d.setColor(color);
  156. graphics2d.setFont( new Font(name,style,size));
  157. //設定圖像顯示狀態
  158. RenderingHintshints= new RenderingHints(
  159. RenderingHints.KEY_TEXT_ANTIALIASING,
  160. RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
  161. hints.put(RenderingHints.KEY_DITHERING,
  162. RenderingHints.VALUE_DITHER_ENABLE);
  163. hints.put(RenderingHints.KEY_RENDERING,
  164. RenderingHints.VALUE_RENDER_SPEED);
  165. hints.put(RenderingHints.KEY_ANTIALIASING,
  166. RenderingHints.VALUE_ANTIALIAS_ON);
  167. hints.put(RenderingHints.KEY_FRACTIONALMETRICS,
  168. RenderingHints.VALUE_FRACTIONALMETRICS_ON);
  169. hints.put(RenderingHints.KEY_COLOR_RENDERING,
  170. RenderingHints.VALUE_COLOR_RENDER_QUALITY);
  171. hints.put(RenderingHints.KEY_DITHERING,
  172. RenderingHints.VALUE_DITHER_DISABLE);
  173. graphics2d.setRenderingHints(hints);
  174. graphics2d.drawString(String.valueOf(message), 0 ,size- 3 );
  175. graphics2d.dispose();
  176. switch (aspect){
  177. case 0 :
  178. break ;
  179. case 1 :
  180. fontImage=MessageImage.rotateImage(fontImage, 90 ,d);
  181. break ;
  182. case 2 :
  183. fontImage=MessageImage.rotateImage(fontImage, 180 ,d);
  184. break ;
  185. case 3 :
  186. fontImage=MessageImage.rotateImage(fontImage, 360 ,d);
  187. break ;
  188. }
  189. return fontImage;
  190. }

  191. public void paint(Graphicsg){
  192. g.drawImage(fontImage, 0 , 0 , null );
  193. }

  194. /**
  195. *水平翻轉當前圖像
  196. *
  197. *@return
  198. */
  199. public static BufferedImagerotateImage( final BufferedImageimage){
  200. int w=image.getWidth();
  201. int h=image.getHeight();
  202. BufferedImageimg;
  203. Graphics2Dgraphics2d;
  204. (graphics2d=(img= new BufferedImage(w,h,image.getColorModel()
  205. .getTransparency())).createGraphics()).drawImage(image, 0 , 0 ,
  206. w,h,w, 0 , 0 ,h, null );
  207. graphics2d.dispose();
  208. return img;
  209. }

  210. /**
  211. *旋轉圖像為指定角度
  212. *
  213. *@paramdegree
  214. *@return
  215. */
  216. public static BufferedImagerotateImage( final BufferedImageimage,
  217. final int angdeg, final boolean d){
  218. int w=image.getWidth();
  219. int h=image.getHeight();
  220. int type=image.getColorModel().getTransparency();
  221. BufferedImageimg;
  222. Graphics2Dgraphics2d;
  223. (graphics2d=(img= new BufferedImage(w,h,type)).createGraphics())
  224. .setRenderingHint(RenderingHints.KEY_INTERPOLATION,
  225. RenderingHints.VALUE_INTERPOLATION_BILINEAR);
  226. graphics2d.rotate(d?-Math.toRadians(angdeg):Math.toRadians(angdeg),
  227. w/ 2 ,h/ 2 );
  228. graphics2d.drawImage(image, 0 , 0 , null );
  229. graphics2d.dispose();
  230. return img;
  231. }

  232. final static public void setAlpha( final Graphics2Dg, final double d){
  233. AlphaCompositealphacomposite=AlphaComposite
  234. .getInstance( 3 ,( float )d);
  235. g.setComposite(alphacomposite);
  236. }

  237. public static void main(String[]args){
  238. java.awt.EventQueue.invokeLater( new Runnable(){
  239. public void run(){
  240. Frameframe= new Frame();
  241. frame.addWindowListener( new WindowAdapter(){
  242. public void windowClosing(WindowEvente){
  243. System.exit( 0 );
  244. }
  245. });
  246. frame
  247. .add( new MessageImage(
  248. "每天面對計算機/n不是壘碼、就是泡論壇、再不然就是和腦殘作斗爭,爆個哈韓吧,攻擊個棒子網什么的,再閑時就寫寫Blog,轉轉Google,"
  249. + "總之24小時離不開電腦,離不開網絡(已被納入我國精神病癥狀|||),長時間不活動,這頸椎可怎么受的了?沒辦法,想點辦法解決吧。"
  250. + "最近有人說圖片能治療頸椎病,我卻偏不信那個邪,就幾句話能費人多大的力氣去看?說到底還真能累死活人不成?"
  251. + "這左轉右繞上竄下跳的,除了費點眼睛,怎么可能把脖子一塊運動起來?您說是不是這道理?" ));
  252. frame.setSize(WIDTH+ 5 ,HEIGHT+ 25 );
  253. frame.setResizable( false );
  254. frame.setTitle( "Java版頸椎自動矯正圖" );
  255. frame.setLocationRelativeTo( null );
  256. frame.setVisible( true );
  257. }
  258. });
  259. }

  260. }



效果圖如下:

Java版頸椎自動矯正圖

仔細說起來,這就和各大小說門戶生成圖片版小說的原理一般無二,毫無技術難度可言,不過畢竟寫了,也就丟出來在Blog湊個數。

那位有時間的話(或者等以后鄙人閑的沒事),可以做個自動導出,弄套資治通鑒全文之類的圖片做頸椎矯正,試驗下連續的看完整本頸椎是輕松了,還是碎掉了……




Java版頸椎自動矯正圖


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品1 | 国产在视频一区二区三区吞精 | 91欧美精品激情在线观看 | 黄色在线资源 | 午夜神器18以下不能进免费观看 | 久久久99精品免费观看 | 精品视频在线观看 | 91欧美 | 久久com | 亚洲高清在线看 | 欧美区日韩区 | 国产亚洲精品久久久久久久软件 | 久久久久久免费播放一级毛片 | 国产秋霞| 欧美日韩三区 | 涩色婷婷狠狠第四四房社区奇米 | 久久草视频这里只精品 | 成人免费毛片高清视频 | aaa毛片手机在线现看 | 亚洲欧美另类日韩 | 久久精品免费 | 国产三级福利 | 九九视频九九热 | 99re热精品视频 | 2017最新h无码动漫 | 噜噜色网| www.99热| 日本三级网址 | 一区二区三区在线免费观看 | 精品欧美一区二区在线观看欧美熟 | 国产精品久久久久久久久久久久久 | 日韩综合一区二区 | 欧美金妇欧美乱妇视频 | 色噜噜狠狠大色综合 | 亚洲国产天堂久久综合9999 | 国产福利在线观看永久免费 | 亚洲日本va在线视频观看 | 嫩草影院黄 | 久久久久国产精品人 | 久久久国产精品免费观看 | 斗罗破苍穹在线观看免费完整观看 |