如何在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中将图像转换为字符画
网页网址:https://www.cdcxhl.com/article34/peiepe.html
成都网站建设公司_创新互联,为您提供静态网站、企业网站制作、品牌网站设计、网站设计公司、Google、网站排名
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联