最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)圖像轉(zhuǎn)碼為字符畫(huà)的方法

 更新時(shí)間:2018年03月31日 10:14:21   作者:Al_assad  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖像轉(zhuǎn)碼為字符畫(huà)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)圖像轉(zhuǎn)碼為字符畫(huà)的具體代碼,供大家參考,具體內(nèi)容如下

public class ImageProcesser { 
  
 private static final char[] charset1 = {'M','8','V','|',':','.',' '}; //默認(rèn)字符素材集 
 private char[] charset; //字符畫(huà)素材集 
 private String imgString = ""; //儲(chǔ)存轉(zhuǎn)化后的字符串 
  
  
 //使用指定字符集構(gòu)造 
 public ImageProcesser(char[] charset){ 
  this.charset = charset; 
 } 
 //使用默認(rèn)字符集構(gòu)造 
 public ImageProcesser(){ 
  this.charset = charset1; 
 } 
  
 public String getImgString(){ 
  return imgString; 
 } 
 
 /*將圖形文件轉(zhuǎn)化為字符畫(huà)字符串*/ 
 public ImageProcesser toBitmapConvert(String imagepath){ 
  return toBitmapConvert(new File(imagepath)); 
 } 
 public ImageProcesser toBitmapConvert(File imageFile){ 
   
  StringBuffer sb = new StringBuffer(); 
  if(!imageFile.exists()){ //當(dāng)讀取的文件不存在時(shí),結(jié)束程序 
   System.out.println("File is not exists!"); 
   System.exit(1); 
  } 
  Color color; 
  try{ 
   BufferedImage buff = ImageIO.read(imageFile); //將圖片文件裝載如BufferedImage流 
   buff = compressImage(buff); 
  
   int bitmapH = buff.getHeight(); 
   int bitmapW = buff.getWidth(); 
    
   //逐行掃描圖像的像素點(diǎn),讀取RGB值,取其平均值,并從charset中獲取相應(yīng)的字符素材,并裝載到sb中 
   for(int y=0; y<bitmapH; y++){    
    for(int x=0; x<bitmapW; x++){ 
     int rgb = buff.getRGB(x,y); 
     color = new Color(rgb); 
      
     int cvalue = (color.getRed()+color.getGreen()+color.getBlue()) / 3; 
     sb.append(charset[(int)((cvalue * charset.length - 1)/255)]+" "); 
    } 
    sb.append("\r\n"); 
   } 
  }catch(IOException ex){ 
   ex.printStackTrace(); 
  } 
  imgString = sb.toString(); 
  return this; 
 } 
  
  
 /*圖像文件預(yù)處理:將圖片壓縮到 最長(zhǎng)邊為 100px*/ 
 private BufferedImage compressImage(BufferedImage srcImg){ 
  int h = srcImg.getHeight(); 
  int w = srcImg.getWidth(); 
  if(Math.max(h,w)<=100) 
   return srcImg; 
  int new_H; 
  int new_W; 
  if(w>h){ 
   new_W = 100; 
   new_H = 100*h/w ; 
  }else{ 
   new_H = 100; 
   new_W = 100*w/h; 
  } 
  BufferedImage smallImg = new BufferedImage(new_W,new_H,srcImg.getType()); 
  Graphics g = smallImg.getGraphics(); 
  g.drawImage(srcImg,0,0,new_W,new_H,null); 
  g.dispose(); 
  return smallImg; 
 } 
  
 /*將字符串保存為.txt文件*/ 
 public void saveAsTxt(String fileName){ 
  try{ 
   PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(fileName))); 
   for(int i = 0;i<imgString.length();i++){ 
    out.print(imgString.charAt(i)); 
   } 
   out.close(); 
    
  }catch(IOException ex){ 
   ex.printStackTrace(); 
  } 
 } 
  
 /*批處理圖像文件*/ 
 public static void batchImgFile(String srcfile, String tragetfile){ 
   
  File folder = new File(tragetfile); //生成圖片的文件夾 
  File srcfolder = new File(srcfile); 
  if(!folder.exists() || !folder.isDirectory()) 
   folder.mkdirs(); 
  ImageProcesser processer = new ImageProcesser(); 
  File[] filelist = srcfolder.listFiles(); 
   
  for(int i=0;i<filelist.length;i++){ 
   if(!filelist[i].isFile()) 
    continue; 
   processer.toBitmapConvert(filelist[i]); 
   processer.saveAsTxt(tragetfile+"/"+(i+1)+".txt"); 
   System.out.println(filelist[i].getName()+" is converted!"); 
  } 
  System.out.println("All img were converted!"); 
   
 } 
 
} 

點(diǎn)擊查看:參考鏈接。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之二叉堆

    Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之二叉堆

    二叉堆是一種特殊的堆,其實(shí)質(zhì)是完全二叉樹(shù)。二叉堆有兩種:最大堆和最小堆。最大堆是指父節(jié)點(diǎn)鍵值總是大于或等于任何一個(gè)子節(jié)點(diǎn)的鍵值。而最小堆恰恰相反,指的是父節(jié)點(diǎn)鍵值總是小于任何一個(gè)子節(jié)點(diǎn)的鍵值
    2022-02-02
  • 使用指定的JDK啟動(dòng)IDEA的三種方法

    使用指定的JDK啟動(dòng)IDEA的三種方法

    今天小編就為大家分享一篇關(guān)于使用指定的JDK啟動(dòng)IDEA的三種方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • 一文詳解如何在Java中啟動(dòng)線程

    一文詳解如何在Java中啟動(dòng)線程

    今天要跟大家聊一聊Java多線程的原理和使用方式,Java多線程是提高程序性能的重要機(jī)制,了解線程生命周期、同步機(jī)制、線程池和線程間通信等概念,可以幫助我們編寫(xiě)出高效、可靠的多線程程序,需要的朋友可以參考下
    2024-07-07
  • Java同步非阻塞模式NIO處理IO數(shù)據(jù)

    Java同步非阻塞模式NIO處理IO數(shù)據(jù)

    這篇文章主要介紹了Java同步非阻塞模式NIO處理IO數(shù)據(jù),服務(wù)器實(shí)現(xiàn)模式為一個(gè)請(qǐng)求一個(gè)線程,即客戶端發(fā)送的鏈接請(qǐng)求都會(huì)注冊(cè)到選擇器上,選擇器輪詢到連接有IO請(qǐng)求時(shí)才啟動(dòng)一個(gè)線程進(jìn)行處理,需要的朋友可以參考下
    2023-10-10
  • 詳解spring項(xiàng)目中如何動(dòng)態(tài)刷新bean

    詳解spring項(xiàng)目中如何動(dòng)態(tài)刷新bean

    這篇文章主要為大家介紹了詳解spring項(xiàng)目中如何動(dòng)態(tài)刷新bean,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(45)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(45)

    下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你
    2021-07-07
  • Java JVM字節(jié)碼指令集總結(jié)整理與介紹

    Java JVM字節(jié)碼指令集總結(jié)整理與介紹

    本節(jié)將會(huì)著重介紹一下JVM中的指令集、Java是如何跨平臺(tái)的、JVM指令集參考手冊(cè)等內(nèi)容。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • 完美解決Java中的線程安全問(wèn)題

    完美解決Java中的線程安全問(wèn)題

    下面小編就為大家?guī)?lái)一篇完美解決Java中的線程安全問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Maven插件的安裝及使用

    Maven插件的安裝及使用

    這篇文章主要介紹了Maven插件的安裝及使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • 實(shí)例分析Java泛型

    實(shí)例分析Java泛型

    本篇文章通過(guò)代碼實(shí)例給大家講述了Java泛型的相關(guān)知識(shí)點(diǎn)以及相關(guān)的代碼分析,對(duì)此有興趣的朋友學(xué)習(xí)下。
    2018-02-02

最新評(píng)論

铜鼓县| 安泽县| 明光市| 汝城县| 平利县| 苏州市| 邮箱| 二连浩特市| 汉阴县| 邵阳市| 南皮县| 海伦市| 荣成市| 北碚区| 吉安市| 柘荣县| 黄梅县| 三穗县| 当雄县| 绥宁县| 象山县| 从化市| 宜宾县| 娱乐| 毕节市| 金湖县| 盐山县| 固安县| 永仁县| 壶关县| 东源县| 榆树市| 福清市| 汉沽区| 阳曲县| 丹寨县| 江油市| 宕昌县| 荔波县| 丰原市| 耒阳市|