① 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裡面的代碼都已經足夠了,你自己稍微看看就能知道怎麼做了。這個包還是比較穩定的。