您的位置:

java图片流,java图片流字符串

本文目录一览:

java把图片转换成二进制流

public static void main(String[] args) throws Exception {

File file = new File("d:\\L.jpg");//图片

FileInputStream fis = new FileInputStream(file);//把图片变成流

FileOutputStream fos = new FileOutputStream(new File("E:\\L.jpg"));  //把图片流写入E盘

byte[] read = new byte[1024]; //每次读取的字节 可以自己定义 256 512 1024  2048  等。。。

int len = 0;

while((len = fis.read(read))!= -1){  //读取变成流的图片

fos.write(read,0,len);//写入图片

}

fis.close();//关闭输入流

fos.close();//关闭输出流

}

Java中如何把图片转换成二进制流

Java中将图片转为二进制流只需要使用FileImageInputStream取得图片文件,然后使用ByteArrayOutputStream 写入到二进制流中即可,下面是详细代码:

  //图片到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[]存回图片或转为String,则:

  //byte数组到图片

  public void byte2image(byte[] data,String path){

    if(data.length3||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.length200000) return "0x";

    StringBuffer sb = new StringBuffer();

    int buf[] = new int[data.length];

    //byte数组转化成十进制

    for(int k=0;kdata.length;k++){

      buf[k] = data[k]0?(data[k]+256):(data[k]);

    }

    //十进制转化成十六进制

    for(int k=0;kbuf.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();

  }

java web二进制流的图片如何用response返回给前台

FileOutputStream很明显你是用的文件流返回的

// 以byte流的方式打开文件 d:\1.gif   

FileInputStream hFile = new FileInputStream(url);      //得到文件大小

int i=hFile.available();

byte data[]=new byte[i];        //读数据

hFile.read(data);         //得到向客户端输出二进制数据的对象

OutputStream toClient=response.getOutputStream();         //输出数据

toClient.write(data);

toClient.flush();

toClient.close();

hFile.close();

扩展资料:

如果是纯文本使用字符流,如果二进制文件,使用字节流。

如果只是得到信息,原样不动,不进行修改操作,例如文件上传和下载,这时就使用字节流。文件上传:在服务器端把浏览器端信息提取出来。文件下载:把服务器端内容写给浏览器端。

如果要操作的是自定义信息,这时使用字符流。

通过response获取的输出流它的真实类型是什么?

ServletOutputStream  response.getOutputStream();

PrintWriter  response.getWriter();

ServletOutputStream由于使用字节流多数是原样复制,所以使用write方法,而不是print方法。

PrintWriter:打印流,两个特点:1.可以设置自动刷新。2.可以将信息原样输出。

Java怎么做到把图片转换成流存入数据库,然后怎么再把图片显示出来。

oracle如下

数据库中提供了两种字段类型 Blob 和 Clob 用于存储大型字符串或二进制数据(如图片)。

Blob 采用单字节存储,适合保存二进制数据,如图片文件。

Clob 采用多字节存储,适合保存大型文本数据。

首先创建一个空 Blob/Clob 字段,再从这个空 Blob/Clob字段获取游标,例如下面的代码:

PreparedStatement ps = conn.prepareStatement( " insert into PICTURE(image,resume) values(?,?) " );

// 通过oralce.sql.BLOB/CLOB.empty_lob()构造空Blob/Clob对象

ps.setBlob( 1 ,oracle.sql.BLOB.empty_lob());

ps.setClob( 2 ,oracle.sql.CLOB.empty_lob());

ps.excuteUpdate();

ps.close();

// 再次对读出Blob/Clob句柄

ps = conn.prepareStatement( " select image,resume from PICTURE where id=? for update " );

ps.setInt( 1 , 100 );

ResultSet rs = ps.executeQuery();

rs.next();

oracle.sql.BLOB imgBlob = (oracle.sql.BLOB)rs.getBlob( 1 );

oracle.sql.CLOB resClob = (oracle.sql.CLOB)rs.getClob( 2 );

// 将二进制数据写入Blob

FileInputStream inStream = new FileInputStream( " c://image.jpg " );

OutputStream outStream = imgBlob.getBinaryOutputStream();

byte [] buf = new byte [ 10240 ];

int len;

while (len = inStream.read(buf) 0 ) {

outStream.write(buf, 0 ,len);

}

inStream.close();

outStream.cloese();

// 将字符串写入Clob

resClob.putString( 1 , " this is a clob " );

// 再将Blob/Clob字段更新到数据库

ps = conn.prepareStatement( " update PICTURE set image=? and resume=? where id=? " );

ps.setBlob( 1 ,imgBlob);

ps.setClob( 2 ,resClob);

ps.setInt( 3 , 100 );

ps.executeUpdate();

ps.close();