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;
 }
}
时间: 2024-10-08 19:28:31

Java中图片文件和字符串的相互转化的相关文章

java中图片文件的传输及显示(Socket以及ServerSocket演示)

//客户端部分 package testSix; import java.awt.Graphics; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.util.Iterator; import javax.imageio.ImageIO; impo

java中图片文件和base64编码的转换

在线图片转base64编码 import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.URL; import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; /** * 下载图片并转换成base6

java中图片文件的判断

javax.imageio 类 ImageIO BufferedImage bi = ImageIO.read(resFile);//resFile --- InputStream if(bi == null){ System.out.println(此文件不为图片文件); } try {//判断是否为图片文件并且返回图片的格式! ImageInputStream iis = ImageIO.createImageInputStream(o); // Find all image readers

Java中的文件操作

在使用计算机编程中,常常会用到对于文件的操作,以下是我对于Java中文件的相关内容学习之后的一个总结和在学习过程中遇到的一些问题. 一.什么是文件 对于文件进行操作,首先我们要知道什么是文件.在此之前,我们要知道,计算机其实就是一个文件系统.在计算机中,我们能在硬盘中看到的所有东西都叫文件.由此看来,计算机中文件是一个很广的范围.事实上,计算机中文件被分为了3种,一个是标准文件,一个是目录文件,还有一个就是虚拟内存文件. 这三种对于文件的分类没有一个明确的定义,后缀名是(.txt..doc..m

java实现图片与base64字符串之间的转换

java实现图片与base64字符串之间的转换 package com.zxc.testjava.ant; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import sun.misc.BASE64Decoder; import sun.misc

java中+(加号或字符串连接)运算顺序的问题

由于java中+(加号或字符串连接)的运算顺序是从左向右的,所以一下程序的输出会得到两个不同的结果 1 public class Test { 2 public static void main(String[] args) { 3 System.out.println("ddd"+7+5); 4 System.out.println(7+5+"ddd"); 5 6 } 7 } 结果为ddd75 12ddd

java中Jnotify文件监视库的使用

jnotify-0.94 下载地址:http://download.csdn.net/detail/zxnlmj/7499157 本人测试环境为win7环境,使用Myeclipse 1.建一个java或者javaweb项目... 2.将jnotify-lib-0.94压缩包解压缩,添加其中的jnotify-0.94.jar到项目中(java项目需要手动build to path,javaweb不需要). 3.建立测试类JnotifyTest.java如下,使用junit进行测试: package

Java中比较两个字符串是否相等的问题

java中判断两个字符串是否相等的问题 我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是"==",但在java中不能这么写.在java中,用的是equals(); 例:A字符串和B和字符串比较: if(A.equals(B)){ } 返回true 或false. String 的equals 方法用于比较两个字符串是否相等.由于字符串是对象类型,所以不能用简单的"=="判断.

Java中读取文件

Java中读取文件,去除一些分隔符,保存在多维数组里面 1 public void readFile(String filePath) 2 { 3 File file=new File(filePath); 4 ArrayList<String[]> dataArray=new ArrayList<String[]>(); 5 try{ 6 String str=new String(); 7 BufferedReader in=new BufferedReader(new Fil