欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java 图片与byte数组互相转换实例

程序员文章站 2024-03-07 14:19:09
实例如下: //图片到byte数组 public byte[] image2byte(string path){ byte[] data = null;...

实例如下:

//图片到byte数组
 public byte[] image2byte(string path){
  byte[] data = null;
  fileimageinputstream input = null;
  try {
   input = new fileimageinputstream(new file(path));
   bytearrayoutputstream output = new bytearrayoutputstream();
   byte[] buf = new byte[1024];
   int numbytesread = 0;
   while ((numbytesread = input.read(buf)) != -1) {
   output.write(buf, 0, numbytesread);
   }
   data = output.tobytearray();
   output.close();
   input.close();
  }
  catch (filenotfoundexception ex1) {
   ex1.printstacktrace();
  }
  catch (ioexception ex1) {
   ex1.printstacktrace();
  }
  return data;
 }
 //byte数组到图片
 public void byte2image(byte[] data,string path){
  if(data.length<3||path.equals("")) return;
  try{
  fileimageoutputstream imageoutput = new fileimageoutputstream(new file(path));
  imageoutput.write(data, 0, data.length);
  imageoutput.close();
  system.out.println("make picture success,please find image in " + path);
  } catch(exception ex) {
   system.out.println("exception: " + ex);
   ex.printstacktrace();
  }
 }
 //byte数组到16进制字符串
 public string byte2string(byte[] data){
  if(data==null||data.length<=1) return "0x";
  if(data.length>200000) return "0x";
  stringbuffer sb = new stringbuffer();
  int buf[] = new int[data.length];
  //byte数组转化成十进制
  for(int k=0;k<data.length;k++){
   buf[k] = data[k]<0?(data[k]+256):(data[k]);
  }
  //十进制转化成十六进制
  for(int k=0;k<buf.length;k++){
   if(buf[k]<16) sb.append("0"+integer.tohexstring(buf[k]));
   else sb.append(integer.tohexstring(buf[k]));
  }
  return "0x"+sb.tostring().touppercase();

 } 

文件解析:

fileimageoutputstream 换成了 fileoutputstream
fileimageinputstream 换成 fileinputstream

以上这篇java 图片与byte数组互相转换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。