Java 图片提取RGB数组 RGBOfCharMaps (整理)

  1 package demo;
  2
  3 /**
  4  *                Java 图片提取RGB数组 RGBOfCharMaps (整理)
  5  * 声明:
  6  *     和ImageCombining配合使用的工具,这里是提取图片的R、G、B生成数组,放入文件
  7  * 中,给ImageCombining进行图片合成。
  8  *
  9  *                                             2016-1-2 深圳 南山平山村 曾剑锋
 10  */
 11
 12 import java.awt.image.BufferedImage;
 13 import java.io.BufferedOutputStream;
 14 import java.io.File;
 15 import java.io.FileOutputStream;
 16 import java.io.IOException;
 17 import java.util.regex.Matcher;
 18 import java.util.regex.Pattern;
 19 import javax.imageio.ImageIO;
 20 import javax.swing.JFileChooser;
 21 import javax.swing.filechooser.FileNameExtensionFilter;
 22
 23 public class RGBOfCharMaps{
 24     /** 声明一个文件选择器引用 */
 25     static JFileChooser jFileChooser = null;
 26     /** 用于保存您选择的单个或者多个文件路径集合, 初始化为null */
 27     static File filePath = null;
 28     /** 保存图片的宽、高 */
 29     static int imageWidth = 0;
 30     static int imageHeight = 0;
 31     /** 图像缓冲引用 */
 32     static BufferedImage bufferedImage = null;
 33     /**
 34      * main()函数,完成任务如下:<br><ol>
 35      *         <li>对文件选择器进行初始化;<br>
 36      *         <li>保存转换好的文件;<br>
 37      *         <li>如果出现异常,给出提示信息。<br></ol>
 38      */
 39     public static void main(String[] args) {
 40         try {
 41             filesSelectInit();
 42             System.out.println(1);
 43             if (getImageFile()) {
 44                 fileSave();
 45                 System.out.println(imageHeight);
 46                 System.out.println(imageWidth);
 47             };
 48
 49         } catch (Exception e) {
 50             //System.out.println("请选择后缀为png/PNG/jpeg/jpe/JPEG的文件");
 51             System.out.println(e);
 52         }
 53     }
 54
 55
 56     private static boolean getImageFile() throws IOException {
 57         if (jFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
 58             filePath = jFileChooser.getSelectedFile();
 59             if (fileSuffixCheck(filePath)) {
 60                 bufferedImage = ImageIO.read(filePath);
 61                 imageWidth = bufferedImage.getWidth();
 62                 imageHeight = bufferedImage.getHeight();
 63                 return true;
 64             }
 65         }
 66         return false;
 67     }
 68
 69
 70     /**
 71      * 文件后缀检查函数,完成任务如下:<br>
 72      * &nbsp &nbsp &nbsp &nbsp
 73      *         采用正则表达式对文件进行匹配。<br>
 74      */
 75     private static boolean fileSuffixCheck(File filePath) {
 76         //使用正则表达式来防止选择目前不支持的文件,目前只支持png/PNG/jpeg/jpe/JPEG格式图片
 77         Pattern pattern = Pattern.compile(".+[.][pPJj][nNpP][eEgGpP][gG]?");
 78         Matcher matcher = pattern.matcher(filePath.getName());
 79         if (matcher.matches() == false) {
 80             return false;
 81         }
 82         return true;
 83     }
 84     /**
 85      * 文件保存函数,完成任务如下:<br><ol>
 86      *         <li>设置一个文件保存的路径,这个路径可以自己修改;<br>
 87      *         <li>创建文件路径下的文件缓冲区;<br>
 88      *         <li>将charMaps中的字符写好文件中,忽略在上、下、左、右边界之外的部分,只将边界内的字符输出;<br>
 89      *         <li>每写完一行字符,进行换行;<br>
 90      *         <li>最后关闭文件缓冲区,如果不关闭,文件缓冲区内的字符可能不会写到文件中,请注意;<br>
 91      *         <li>提示完成以及提示文件路径。<br><ol>
 92      */
 93     private static void fileSave() {
 94         File[] saveFilePath = new File[3];
 95         saveFilePath[0] = new File("/home/soft1/B.txt");
 96         saveFilePath[1] = new File("/home/soft1/G.txt");
 97         saveFilePath[2] = new File("/home/soft1/R.txt");
 98         try {
 99             SaveRGB(saveFilePath);
100         } catch (IOException e1) {
101             e1.printStackTrace();
102         }
103     }
104
105     private static void SaveRGB(File[] saveFilePath) throws IOException {
106         String[] RGB = {"Blue","Green","Red"};
107         StringBuilder stringBuilder = new StringBuilder();
108         for (int i = 0; i < saveFilePath.length; i++) {
109             BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(saveFilePath[i]));
110             singleColorSave(stringBuilder,bufferedOutputStream,i);
111             System.out.println("CharMaps已完成颜色"+RGB[i]+"工作,请到"+saveFilePath[i].getPath()+"中查看结果 ^_^\n");
112         }
113     }
114     private static void singleColorSave(StringBuilder stringBuilder,
115             BufferedOutputStream bufferedOutputStream, int i) throws IOException {
116         stringBuilder.append('{');
117         for (int row = 0; row < imageHeight; row++) {
118             stringBuilder.append('{');
119             for (int col = 0; col < imageWidth; col++) {
120                 int rgb = bufferedImage.getRGB(col, row);
121                 int singleColor = ((rgb >> (8*i))&0xff);
122                 stringBuilder.append(singleColor);
123                 stringBuilder.append(',');
124             }
125             stringBuilder.append('}');
126             if (row == imageHeight-1) {
127                 stringBuilder.append('}');
128             }else {
129                 stringBuilder.append(',');
130             }
131             byte[] byteWrite = (byte[])stringBuilder.toString().getBytes();
132             bufferedOutputStream.write(byteWrite, 0, stringBuilder.length());
133             bufferedOutputStream.write('\n');
134             bufferedOutputStream.flush();
135             stringBuilder.delete(0, stringBuilder.length());
136         }
137         bufferedOutputStream.close();
138     }
139
140
141     /**
142      * 文件选择对话框初始化函数,Init是初始化的英文单词缩写,完成任务如下:<br><ol>
143      *         <li>提示欢迎使用CharMaps;<br>
144      *         <li>创建文件选择对话框;<br>
145      *         <li>创建文件选择过滤器;<br>
146      *         <li>将文件选择过滤器添加进入文件对话框,还句话说是:使文件选择过滤器有效;<br>
147      *         <li>将文件选择对话框设置为可以多选;<br>
148      *         <li>提示完成初始化。<br></ol>
149      */
150     private static void filesSelectInit() {
151         System.out.println("\n\t欢迎使用RGBOfCharMaps");
152         jFileChooser = new JFileChooser();
153         FileNameExtensionFilter filter = new FileNameExtensionFilter(
154                 "Images", "jpg", "png","PNG","JPG","jpe","JPE");
155         jFileChooser.setFileFilter(filter);
156         System.out.println("1、完成文件选择初始化");
157     }
158 }

 

RGBOfCharMaps
时间: 2024-12-03 18:42:54

Java 图片提取RGB数组 RGBOfCharMaps (整理)的相关文章

Java 图片转换为字符图 CharMaps (整理)

  /* * Java 图片转换成字符图 CharMaps (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * * @(#)CharMaps.java 2014/1/16 * 1.这个一个Java程序,感谢您花费大量时间阅读本文档: * 2.本人知道大家并不喜欢看大量文字描述,但实属无奈,因为我们的沟通只能通过文字: * 3.当您在复制.粘贴的时候请注意包名为:practice,文件名为:CharMaps,以防止一些不必要的麻烦: * 4.下面这张由字符组成的图是直接由图片生成的,

java图片与byte数组的转换?我怎么转换不回去呀???

问题描述 package com.image;import java.awt.image.BufferedImage;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import javax.imageio.ImageIO;public class ImageWithByte { public static byte[] image2Bytes(String

Java RGB数组图像合成 ImageCombining (整理)

1 /** 2 * Java RGB数组图像合成 ImageCombinning (整理) 3 * 4 * 2016-1-2 深圳 南山平山村 曾剑锋 5 * 6 * 注意事项: 7 * 1.本程序为java程序,同时感谢您花费宝贵的时间来阅读本文档: 8 * 2.请注意包名为:practice,文件名为:ImageCombining,注意检查,以防一些不必要的麻烦: 9 * 3.在完成确认2中的内容后,本程序可以直接运行,因为本软件说明都在注释中: 10 * 4.本人已经尽可能对代码进行全面的

string-c++中怎么将本地图片转化成java需要的byte数组

问题描述 c++中怎么将本地图片转化成java需要的byte数组 c++调用java写的webservice时,需要传入一个本地图片转化为byte数组的数据,求大神给讲一下. 这是java写的webservice接口方法. public String verifyFaceSingle(String deviceId,byte[] leftImage,byte[] rightImage); 现在需要在vs2010里面获取byte[] leftImage. Serializer->StartElem

如何根据已有RGB数组生成图片

问题描述 我是要用c#来实现,现在已经知道了rgb数组,那么如何快速生成一张图片呢, 解决方案 解决方案二:byte[]imageData=...Bitmapbmp;using(varms=newMemoryStream(imageData)){bmp=newBitmap(ms);} 解决方案三:Bitmapbmp=newBitmap(w,h);for(intx=0;x<w;x++){for(inty=0;y<h;y++){bmp.SetPixel(x,y,Color.FromArgb(255

Java图片上查找图片算法

之前用按键精灵写过一些游戏辅助,里面有个函数叫FindPic,就上在屏幕范围查找给定的一张图片,返回查找到的坐标位置. 现在,Java来实现这个函数类似的功能. 算法描述: 屏幕截图,得到图A,(查找的目标图片为图B): 遍历图A的像素点,根据图B的尺寸,得到图B四个角映射到图A上的四个点: 得到的四个点与图B的四个角像素点的值比较.如果四个点一样,执行步骤4:否则,回到步骤2继续: 进一步对比,将映射范围内的全部点与图B全部的点比较.如果全部一样,则说明图片已找到:否则,回到步骤2继续: 这里

mage-怎么用java图片加文字水印ne

问题描述 怎么用java图片加文字水印ne 要一个完整的例子,传入的参数最好是 源文件 byte[] 文字内容 返回的是加水印之后的 byte[] 最好有注释,谢谢了 Exception in thread "main" sun.misc.ServiceConfigurationError: javax.imageio.spi.ImageReaderSpi: Provider it.geosolutions.imageio.stream.input.spi.FileImageInput

java图片验证码生成教程详解_java

首先,我们先来看本地如何生成图片验证码的,再来写输出到网页的验证码如何实现. 先来看最简单的-实现的功能是,将一个字符串变成图片写入到文件中 实现代码: package cn.hncu.img; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOE

怎样从ppt中提取图片?PowerPoint图片提取技巧

  看到人家的PPT各种精美,无论是背景装饰素材还是图片都很好看想要占为己有该如何操作?怎样从ppt中提取图片?接下来小编就为大家带来PowerPoint图片提取技巧. 怎样从ppt中提取图片?PowerPoint图片提取技巧 在这里小编要为大家介绍一个让你详见恨晚的PowerPoint教程,这个技巧学会了比单独截图保存图片省事得多: 把ppt文件的后缀格式改为".rar",然后使用解压软件将其解压开来,在文件夹中就可以很轻松的看到所有原PPT中的图片了,方便得很!