Java中图片文件和字符串的相互转化
2017-03-25 00:00
190 查看
Java中图片文件和字符串的相互转化 (图片精度可能会丢失)
import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import javax.imageio.ImageIO; public class TypeConverter { private static String ImageFileFormat = "jpg"; private static StringBuffer sb1 = null; private static BufferedImage buffImage = null; private static ByteArrayOutputStream baos = null; private static byte[] byteImage = null; private static String ImageFileNameFormat = "yyyy-MM-dd_HH-mm-ss"; private static String splitSymbol = ","; private static String[] imageStringArr = null; // picturePath为图片文件的在磁盘上的保存路径,返回值为文件转换成字符串之后的字符串,转换过程以逗号分隔(此方法理论上也可以将非图片格式的文件转换成字符串) public static String ImageFileToString(String picturePath) { sb1 = new StringBuffer(); try { buffImage = ImageIO.read(new File(picturePath)); baos = new ByteArrayOutputStream(); ImageIO.write(buffImage, ImageFileFormat, baos); } catch (IOException e) { e.printStackTrace(); } byteImage = baos.toByteArray(); for (int i = 0; i < byteImage.length; i++) { if (sb1.length() == 0) { sb1.append(byteImage[i]); } else { sb1.append(splitSymbol + byteImage[i]); } } return sb1.toString(); } // pictureString为需要转换成图片文件的字符串,pictureToPath是字符串转换为图片文件之后的图片文件的保存路径 public static void StringToImageFile(String pictureString, String pictureToPath) { if (pictureString.contains(",")) { imageStringArr = split(pictureString, splitSymbol); byte[] image = new byte[imageStringArr.length]; for (int i = 0; i < imageStringArr.length; i++) { image[i] = Byte.parseByte(imageStringArr[i]); } String name = saveImage(image, pictureToPath); } else { System.out.println("(字符串----->图片文件)不能解析的格式!"); } } private static String[] split(String s, String token) { if (s == null) return null; if (token == null || s.length() == 0) return new String[] { s }; int size = 0; String[] result = new String[4]; while (s.length() > 0) { int index = s.indexOf(token); String splitOne = s; if (index > -1) { splitOne = s.substring(0, index); s = s.substring(index + token.length()); } else { s = ""; } if (size >= result.length) { String[] tmp = new String[result.length * 2]; System.arraycopy(result, 0, tmp, 0, result.length); result = tmp; } if (splitOne.length() > 0) { result[size++] = splitOne; } } String[] tmp = result; result = new String[size]; System.arraycopy(tmp, 0, result, 0, size); return result; } private static BufferedImage readImage(byte[] bytes) throws IOException { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); return ImageIO.read(bais); } private static String saveImage(byte[] imgages, final String saveDir) { try { BufferedImage bis = readImage(imgages); DateFormat sdf = new SimpleDateFormat(ImageFileNameFormat); String fileTime = sdf.format(new Date()); final String name = fileTime + "_" + "." + ImageFileFormat; File f = new File(saveDir + name); boolean istrue = false; if (f.exists()) { istrue = ImageIO.write(bis, ImageFileFormat, f); } else { f.mkdirs(); istrue = ImageIO.write(bis, ImageFileFormat, f); } if (istrue) { return name; } } catch (Exception e) { } return null; } }
相关文章推荐
- Java中图片文件和字符串的相互转化
- java读取写入图片文件、byte[]、base64字符串、16进制字符串相互转换
- 将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- [转]Java 字符串与Unicode的相互转化
- Java从数据库中读取图片并转化为字符串类型
- java将图片文件转化为字节流
- java字符串与二进制的相互转化
- java网络图片与二进制字符串相互转换
- 字符串和整形数组的相互转化(JAVA程序)
- JAVA开发_图片文件与字符串之间的转换
- 【Java】字符串变量和整形之间的相互转化与静态方法static
- [置顶] Android开发之将图片文件转化为字节数组字符串,并对其进行Base64编码处理
- java字符串与二进制的相互转化
- Java List或Map对象和json字符串数据的相互转化
- Java基础知识强化59:String(字符串)和其他类型的相互转化
- Java字符串与文件相互转换工具
- Java对象与XML文件之间相互转化(含源代码)
- java 对象 与json字符串的相互转化
- 关于图片与XML文件相互转化
- delphi 怎么将一个文件流转换成字符串(String到流,String到文件,相互转化)