国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Java > 正文

java實現圖像轉碼為字符畫的方法

2024-07-14 08:39:51
字體:
來源:轉載
供稿:網友

本文實例為大家分享了java實現圖像轉碼為字符畫的具體代碼,供大家參考,具體內容如下

public class ImageProcesser {    private static final char[] charset1 = {'M','8','V','|',':','.',' '}; //默認字符素材集  private char[] charset; //字符畫素材集  private String imgString = ""; //儲存轉化后的字符串      //使用指定字符集構造  public ImageProcesser(char[] charset){   this.charset = charset;  }  //使用默認字符集構造  public ImageProcesser(){   this.charset = charset1;  }    public String getImgString(){   return imgString;  }   /*將圖形文件轉化為字符畫字符串*/  public ImageProcesser toBitmapConvert(String imagepath){   return toBitmapConvert(new File(imagepath));  }  public ImageProcesser toBitmapConvert(File imageFile){      StringBuffer sb = new StringBuffer();   if(!imageFile.exists()){ //當讀取的文件不存在時,結束程序    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();        //逐行掃描圖像的像素點,讀取RGB值,取其平均值,并從charset中獲取相應的字符素材,并裝載到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;  }      /*圖像文件預處理:將圖片壓縮到 最長邊為 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!");     }  } 

點擊查看:參考鏈接。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潜江市| 定兴县| 锦州市| 大埔县| 武胜县| 灵武市| 米泉市| 通许县| 左权县| 康定县| 霞浦县| 徐闻县| 福安市| 宜章县| 苍梧县| 北海市| 乐山市| 思南县| 南和县| 比如县| 昭觉县| 榆社县| 赤峰市| 双流县| 侯马市| 辽阳市| 海伦市| 改则县| 安宁市| 新野县| 英德市| 孙吴县| 常德市| 日照市| 志丹县| 固原市| 南投市| 枞阳县| 汉源县| 江安县| 舒城县|