如何在java中將圖像轉換為字符畫?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
目前創新互聯已為數千家的企業提供了網站建設、域名、虛擬空間、綿陽服務器托管、企業網站設計、靈璧網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
Java是一門面向對象編程語言,可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序。
具體內容如下
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!"); } }
關于如何在java中將圖像轉換為字符畫問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創新互聯行業資訊頻道了解更多相關知識。
網頁標題:如何在java中將圖像轉換為字符畫
網頁網址:http://vcdvsql.cn/article34/peiepe.html
成都網站建設公司_創新互聯,為您提供靜態網站、企業網站制作、品牌網站設計、網站設計公司、Google、網站排名
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯