① 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 将图片生成pdf 问题
在Java中生成PDF文档时,你可以使用iText库来处理图片并将其转换为PDF。具体来说,你可以通过以下步骤完成这一任务。首先,你需要创建一个PDF文档对象,例如:Document doc = new Document(null, 0, 0, 0, 0);。然后,你需要通过指定图片路径获取图片对象,例如:Image image = Image.getInstance(imgPath);。接着,你需要实例化PdfWriter对象,将文档与输出流关联,例如:PdfWriter.getInstance(doc, fos);。
除此之外,你需要打开文档进行写入操作,并添加图片到文档中。打开文档的方法为:doc.open();。接着,你可以将图片添加到文档中,例如:doc.add(image);。最后,记得关闭文档以确保所有数据都被正确写入输出流,例如:doc.close();。
在实际操作中,你可能会遇到一些问题,比如图片大小和格式不兼容的问题。为了解决这些问题,你可以在获取图片对象时使用一些额外的参数进行调整,例如:Image image = Image.getInstance(imgPath, null, 100, null);。这里,100代表的是缩放比例,你可以根据需要进行调整。
另外,如果你的图片较多,或者需要频繁生成PDF文档,建议使用iText的流式处理方法,这可以提高生成PDF的效率。同时,为了确保生成的PDF文档质量,你还可以通过设置文档的边距、字体等属性来优化文档的外观。
总之,使用iText库生成PDF文档是一个相对简单的过程,只要遵循正确的步骤和方法,你就能成功地将图片转换为PDF文件。
③ java如何把图片转换成二进制并存到oracle的blob中,求代码
importjavax.imageio.ImageIO;
importjava.awt.image.BufferedImage;
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.File;
importjava.io.IOException;
publicclassImageUtils{
publicstaticvoidmain(String[]args){
Stringstr=img2Binary("C:\Users\hny\Desktop\favicon.jpg");
System.out.println(str);
binary2Img("C:\Users\hny\Desktop\favicon2.jpg",str);
}
/**
*图片转二进制字符串
*
*@parampath图片路径
*@return
*/
publicstaticStringimg2Binary(Stringpath){
Filefile=newFile(path);
if(!file.exists()){
returnnull;
}
try{
BufferedImagebi=ImageIO.read(file);
ByteArrayOutputStreambaos=newByteArrayOutputStream();
Stringsuffix=getSuffix(path);
ImageIO.write(bi,suffix,baos);
byte[]bytes=baos.toByteArray();
returnnewsun.misc.BASE64Encoder().encodeBuffer(bytes).trim();
}catch(IOExceptione){
e.printStackTrace();
}
returnnull;
}
/**
*字符串转图片文件
*
*@parampath图片路径
*@paramimgBinary图片字符串
*/
publicstaticvoidbinary2Img(Stringpath,StringimgBinary){
try{
Filefile=newFile(path);
byte[]bytes1=newsun.misc.BASE64Decoder().decodeBuffer(imgBinary);
ByteArrayInputStreams=newByteArrayInputStream(bytes1);
BufferedImagebi1=ImageIO.read(s);
Stringsuffix=getSuffix(path);
ImageIO.write(bi1,suffix,file);
}catch(IOExceptione){
e.printStackTrace();
}
}
/**
*获取图片后缀名
*
*@parampath
*@return
*/
privatestaticStringgetSuffix(Stringpath){
intindex=path.contains(".")?path.lastIndexOf("."):-1;
if(index>-1){
returnpath.substring(index+1);
}
returnnull;
}
}
④ java中如何把一个图片转换成二进制流存入到类中啊
1.将Image图像文件存入到数据库中
我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.
要这里有关数据的操作略写,我将一些代码段写成方法,方便直接调用.
//根据文件名(完全路径)
public byte[] SetImageToByteArray(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open);
int streamLength = (int)fs.Length;
byte[] image = new byte[streamLength];
fs.Read(image, 0, streamLength);
fs.Close();
return image;
}
//另外,在ASP.NET中通过FileUpload控件得到的图像文件可以通过以下方法
public byte[] SetImageToByteArray(FileUpload FileUpload1)
{
Stream stream = FileUpload1.PostedFile.InputStream;
byte[] photo = new byte[FileUpload1.PostedFile.ContentLength];
stream.Read(photo, 0, FileUpload1.PostedFile.ContentLength);
stream.Close();
return photo;
}
2.从SQL Server数据库读取Image类型的数据,并转换成bytes[]或Image图像文件
//要使用SqlDataReader要加载using System.Data.SqlClient命名空间
//将数据库中的Image类型转换成byte[]
public byte[] SetImage(SqlDataReader reader)
{
return (byte[])reader["Image"];//Image为数据库中存放Image类型字段
}
//将byte[]转换成Image图像类型
//加载以下命名空间using System.Drawing;/using System.IO;
using System.Data.SqlClient;*/
public Image SetByteToImage(byte[] mybyte)
{
Image image;
MemoryStream mymemorystream = new MemoryStream(mybyte,0, mybyte.Length);
image = Image.FromStream(mymemorystream);
return image;
}
⑤ 后端传流文件图片给前端
include关闭了我的照片流好能上传照片吗可以上传照片。
后端给前端返回了一个文档流,这就需要我们自己转换为Blob格式的数据,再使用这个数据转化成一个url地址,模拟一个a标签,将地址放进去。
我们要在点击图片之后,调用另一个接口,把该张图片文件上传上去。
后端传送图片到前端这种方式前端图片的src将会是一大串编码(即data:image/jpeg;base64,加上图片的base64编码)
controller怎么返回图片信息给前端查看
1可以通过URL请求来获取对应的图片信息并返回给前端查看;
2在controller中可以使用File类来获取指定路径下的图片信息,然后将图片信息打包成一个字节数组并返回给前端;
3可以使用SpringMVC中的ResponseEntity类来进行文件下载,将图片信息转换成流并返回给前端,前端可以通过src属性将其显示出来。
pythonflask将读取的图片返回给web前端最近在做毕业设计系统可视化的时候,分析框架选择了Python语言,但需要用前端来展示分析的结果,虽然考虑使用echarts图表来完成,对于简单的图表需要的数据格式简单,但是比如热力图所需的数据得自己去组装,Python后台画图很简单,一两句的事情,但是怎么把画好的图片放到html等前端显示呢,最近网上看了几个例子,但有些例子都没有达到正常显示图片,所以自己动手亲自试了一试。
原理:Python在后台把图片处理为Base64位的格式,再把Base64格式的图片在html用img控件显示。
flask页面中使用jinja2渲染引擎(使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”),在jinja2中,存在三种语法,有点类似springboot中thymeleaf的语法格式:
控制结构:{%%}
变量取值:{{}}
注释:{##}
启动flask程序后,在网页地址栏输入地址访问。
避坑,网上有许多例子是这样的:
javaweb二进制流的图片如何用response返回给前台FileOutputStream很明显你是用的文件流返回的
//以byte流的方式打开文件d:1.gif??
FileInputStreamhFile=newFileInputStream(url);???//得到文件大小
inti=hFile.available();
bytedata[]=newbyte[i];????//读数据
hFile.read(data);?????//得到向客户端输出二进制数据的对象
OutputStreamtoClient=response.getOutputStream();?????//输出数据
toClient.write(data);
toClient.flush();
toClient.close();
hFile.close();
(5)java把图片转换成流扩展阅读:
如果是纯文本使用字符流,如果二进制文件,使用字节流。
如果只是得到信息,原样不动,不进行修改操作,例如文件上传和下载,这时就使用字节流。文件上传:在服务器端把浏览器端信息提取出来。文件下载:把服务器端内容写给浏览器端。
如果要操作的是自定义信息,这时使用字符流。
通过response获取的输出流它的真实类型是什么?
ServletOutputStream?response.getOutputStream();
PrintWriter?response.getWriter();
ServletOutputStream由于使用字节流多数是原样复制,所以使用write方法,而不是print方法。
PrintWriter:打印流,两个特点:1.可以设置自动刷新。2.可以将信息原样输出。
⑥ Java中如何把图片转换成二进制流
Java中将图片转为二进制流只需要使用FileImageInputStream取得图片文件,然后使用ByteArrayOutputStream 写入到二进制流中即可,下面是详细代码:
//图片到byte数组
publicbyte[]image2byte(Stringpath){
byte[]data=null;
FileImageInputStreaminput=null;
try{
input=newFileImageInputStream(newFile(path));
ByteArrayOutputStreamoutput=newByteArrayOutputStream();
byte[]buf=newbyte[1024];
intnumBytesRead=0;
while((numBytesRead=input.read(buf))!=-1){
output.write(buf,0,numBytesRead);
}
data=output.toByteArray();
output.close();
input.close();
}
catch(FileNotFoundExceptionex1){
ex1.printStackTrace();
}
catch(IOExceptionex1){
ex1.printStackTrace();
}
returndata;
}
另外,如果需要将byte[]存回图片或转为String,则:
//byte数组到图片
publicvoidbyte2image(byte[]data,Stringpath){
if(data.length<3||path.equals(""))return;
try{
=newFileImageOutputStream(newFile(path));
imageOutput.write(data,0,data.length);
imageOutput.close();
System.out.println("MakePicturesuccess,Pleasefindimagein"+path);
}catch(Exceptionex){
System.out.println("Exception:"+ex);
ex.printStackTrace();
}
}
//byte数组到16进制字符串
publicStringbyte2string(byte[]data){
if(data==null||data.length<=1)return"0x";
if(data.length>200000)return"0x";
StringBuffersb=newStringBuffer();
intbuf[]=newint[data.length];
//byte数组转化成十进制
for(intk=0;k<data.length;k++){
buf[k]=data[k]<0?(data[k]+256):(data[k]);
}
//十进制转化成十六进制
for(intk=0;k<buf.length;k++){
if(buf[k]<16)sb.append("0"+Integer.toHexString(buf[k]));
elsesb.append(Integer.toHexString(buf[k]));
}
return"0x"+sb.toString().toUpperCase();
}
⑦ 用java如何添加图片到word中,是直接添加不是解析,最好能有代码
首先你得打开这个word文档,然后你再把这个图片做成文件流的格式,然后把它写进去。
但是这个过程如果你用java自带的文件流格式打开的话,写进去会是乱码。我做过的方法是用开源框架包,poi.jar可以用来做有关office的打开、写入、读出等操作,具体代码没有了,但是demo里面的代码都已经足够了,你自己稍微看看就能知道怎么做了。这个包还是比较稳定的。