「java二进制图片」二进制转图片 java

博主:adminadmin 2022-11-30 18:29:08 85

本篇文章给大家谈谈java二进制图片,以及二进制转图片 java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

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中如何把图片转换成二进制流

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后台怎么把数据库二进制图片传到前台显示?

两种思路,一种是你把图片下下来。告诉路径给前端。

另一种是你直接把图片转换成byte数组,返回给前端。前端是可以有办法的。(我用过这种用来爬虫爬

验证码

都是这么干的)

望采纳

java如何从数据库中下载以二进制存储的图片

/**

* Created by IntelliJ IDEA.

* User: ljt

* Date: 2003-3-31

* Time: 18:51:38

* To change this template use Options | File Templates.

*/

import oracle.jdbc.driver.OraclePreparedStatement;

import oracle.jdbc.driver.OracleResultSet;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.Statement;

import java.sql.Clob;

public class TestOpenDoc {

public OracleResultSet ors = null; //**这里rs一定要用Oracle提供的

public OraclePreparedStatement opst = null; //**PreparedStatement用

public Connection conn = null;

public Statement stmt = null;

public TestOpenDoc() {

}

public boolean getConnect() {

//这是我的数据库所在

String serverName = "prosrv";

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

String url = "jdbc:oracle:thin:@" + serverName + ":1521:BOHDATA";

conn = DriverManager.getConnection(url, "appuser", "appuser");

}

catch (Exception e) {

System.out.println(e);

return false;

}

return true;

}

public static void main(String[] args) {

TestOpenDoc test = new TestOpenDoc();

if (!test.getConnect()) {

System.out.println("数据库连结错误");

return ;

}

try{

test.conn.setAutoCommit(false);

byte a[] = null; //**将测试文件test.doc读入此字节数组

java.io.FileInputStream fin = null;

java.io.FileOutputStream fout = null;

//Oracle提供的

try {

java.io.File f1 = new java.io.File("c:/test.doc");

java.io.File f2 = new java.io.File("d:/testout.doc"); //**从BLOB读出的信息写

//入该文 件,和源文件对比测试用

fin = new java.io.FileInputStream(f1);

fout = new java.io.FileOutputStream(f2);

int flength = (int) f1.length(); //**读入文件的字节长度

System.out.println("file length::" + flength);

a = new byte[flength];

int i = 0;

int itotal = 0;

//* 将文件读入字节数组

for (; itotal flength; itotal = i + itotal) {

i = fin.read(a, itotal, flength - itotal);

}

fin.close();

System.out.println("read itotal::" + itotal);

//**注意Oracle的 BLOB一定要用EMPTY_BLOB()初始化

String mysql =

"insert into filelist (FileName,FileSize,FileBody) values (?,?,EMPTY_BLOB())";

OraclePreparedStatement opst = (OraclePreparedStatement) test.conn.

prepareStatement(mysql);

opst.setString(1, "wordtemplate2");

opst.setInt(2, flength);

opst.executeUpdate();

opst.clearParameters();

// /**插入其它数据后,定位BLOB字段

mysql = "select filebody from filelist where filename=?";

opst = (OraclePreparedStatement) test.conn.prepareStatement(mysql);

opst.setString(1, "wordtemplate2");

OracleResultSet ors = (OracleResultSet) opst.executeQuery();

if (ors.next()) {

oracle.sql.BLOB blob = ors.getBLOB(1); //**得到BLOB字段

int j = blob.putBytes(1, a); //**将字节数组写入BLOB字段

System.out.println("j:" + j);

test.conn.commit();

ors.close();

Clob clob;

clob = ors.getClob("");

String str;

str = clob.toString();

str = clob.getSubString(0L,(int)clob.length());

System.out.println(str);

}

System.out.println("insert into ok");

byte b[] = null; //**保存从BLOB读出的字节

opst.clearParameters();

mysql = "select filebody from filelist where filename=?";

opst = (OraclePreparedStatement) test.conn.

prepareStatement(mysql);

opst.setString(1, "wordtemplate2");

ors = (OracleResultSet) opst.executeQuery();

if (ors.next()) {

oracle.sql.BLOB blob2 = ors.getBLOB(1);

System.out.println("blob2 length:" + blob2.length());

b = blob2.getBytes(1, flength); //**从BLOB取出字节流数据

System.out.println("b length::" + b.length);

test.conn.commit();

}

ors.close();

// 将从BLOB读出的字节写入文件

fout.write(b, 0, b.length);

fout.close();

System.out.println("write itotal::" + b.length);

}

catch (Exception e) {

System.out.println("errror :" + e.toString());

e.printStackTrace();

}

finally { //**关闭所有数据联接

test.conn.commit();

}

}

catch(Exception e){

System.out.println(e);

}

}

}

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 问题:怎样把一个bin二进制图片文件用java代码打开?求解!

Java中可以用java.awt.Toolkit类打开gif,jpg,png三种类型的二进制图片文件,如果是其它类型的图片,需要转成上述格式的图片才行。

我给你一个例子你看看吧。

import java.awt.Frame;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.Toolkit;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

public class LoadFromAppli extends Frame {

 private static final long serialVersionUID = 1L;

 Image im;

 //构造函数

 public LoadFromAppli(){

  //根据地址装入图片

  im=Toolkit.getDefaultToolkit().getImage("bg.png");//bg.png处写你的图片的绝对或相对路径

        //关闭窗口

  addWindowListener(new WindowAdapter()

  {

   public void windowClosing(WindowEvent e)

   {

    System.exit(0);

   }

  });

 }

 //在Frame上显示图片

 public void paint(Graphics g){

  g.drawImage(im, 0, 0, this);

 }

 public static void main(String[] args) {

  LoadFromAppli f = new LoadFromAppli(); 

  f.setSize(200,200);

  f.setVisible(true);

 }

}

java二进制图片的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于二进制转图片 java、java二进制图片的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-30,除非注明,否则均为首码项目网原创文章,转载请注明出处。