當前位置:首頁 » 編程語言 » java圖片byte

java圖片byte

發布時間: 2022-12-19 04:22:20

『壹』 java:為什麼傳輸圖片是常用base64字元串轉碼,而不是直接傳輸byte[]呢求解

先說說base64吧:對於圖片來說,一個位元組佔八位,如果都換成byte[]的話,會很長,不便於傳輸,那麼就把沒6個位元組來對應一個新的字元(如010011是19,對應base64編碼的T),,所以這個目的主要是精簡數據,便於傳輸;
另外常用的用途是:做不嚴格的加密用,比如常見的磁力鏈接,你懂的;因為它相對於嚴格加密省時省力,速度快,況且可恢復(如果用MD5就不行)

『貳』 php 如何將圖片轉換成java中Byte[]的

按照你的要求編寫的Java程序如下:( 要注意的地方見語句後面的注釋)


importjava.awt.image.BufferedImage;importjava.awt.image.RenderedImage;importjava.io.File;importjava.io.IOException;importjavax.imageio.ImageIO;publicclassImageWithArray{publicstaticvoidmain(String[]args){//讀取圖片到BufferedImageBufferedImagebf=readImage("c:\tmp\6\female.png");//這里寫你要讀取的絕對路徑+文件名//將圖片轉換為二維數組int[][]rgbArray1=convertImageToArray(bf);//輸出圖片到指定文件writeImageFromArray("c:\tmp\2.png","png",rgbArray1);//這里寫你要輸出的絕對路徑+文件名System.out.println("圖片輸出完畢!");}(StringimageFile){Filefile=newFile(imageFile);BufferedImagebf=null;try{bf=ImageIO.read(file);}catch(IOExceptione){e.printStackTrace();}returnbf;}publicstaticint[][]convertImageToArray(BufferedImagebf){//獲取圖片寬度和高度intwidth=bf.getWidth();intheight=bf.getHeight();//將圖片sRGB數據寫入一維數組int[]data=newint[width*height];bf.getRGB(0,0,width,height,data,0,width);//將一維數組轉換為為二維數組int[][]rgbArray=newint[height][width];for(inti=0;i<height;i++)for(intj=0;j<width;j++)rgbArray[i][j]=data[i*width+j];returnrgbArray;}(StringimageFile,Stringtype,int[][]rgbArray){//獲取數組寬度和高度intwidth=rgbArray[0].length;intheight=rgbArray.length;//將二維數組轉換為一維數組int[]data=newint[width*height];for(inti=0;i<height;i++)for(intj=0;j<width;j++)data[i*width+j]=rgbArray[i][j];//將數據寫入BufferedImageBufferedImagebf=newBufferedImage(width,height,BufferedImage.TYPE_INT_BGR);bf.setRGB(0,0,width,height,data,0,width);//輸出圖片try{Filefile=newFile(imageFile);ImageIO.write((RenderedImage)bf,type,file);}catch(IOExceptione){e.printStackTrace();}}}

運行結果:

圖片輸出完畢!

原圖:

『叄』 java中如何將位元組數組轉化成圖片

java將byte數組轉換成圖片,可以File和IO操作來完成,實例如下:

//byte數組到圖片到硬碟上 public void byte2image(byte[] data,String path){ if(data.length<3||path.equals("")) return;//判斷輸入的byte是否為空 try{ FileImageOutputStream imageOutput = new FileImageOutputStream(new File(path));//打開輸入流 imageOutput.write(data, 0, data.length);//將byte寫入硬碟 imageOutput.close(); System.out.println("Make Picture success,Please find image in " + path); } catch(Exception ex) { System.out.println("Exception: " + ex); ex.printStackTrace(); } }

『肆』 java怎樣把一個byte數組保存成圖片到硬碟上

java將byte數組轉換成圖片,可以File和IO操作來完成,實例如下:

//byte數組到圖片到硬碟上
publicvoidbyte2image(byte[]data,Stringpath){
if(data.length<3||path.equals(""))return;//判斷輸入的byte是否為空
try{
=newFileImageOutputStream(newFile(path));//打開輸入流
imageOutput.write(data,0,data.length);//將byte寫入硬碟
imageOutput.close();
System.out.println("MakePicturesuccess,Pleasefindimagein"+path);
}catch(Exceptionex){
System.out.println("Exception:"+ex);
ex.printStackTrace();
}
}

『伍』 java中 圖片是byte[]保存的 現在前台要怎麼顯示出來啊

是byte型的你在後台用response.write(byte[] b),輸出,然後在前端用<img src="這個sevlet的地址"/>顯示出來。

『陸』 JAVA 如何讀取接受到的byte[]圖片

用文件的輸入輸入流來把byte數組的圖片轉換成文件。

參考API的FileInputStream與FileOutputStream

『柒』 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();
}
熱點內容
sql存儲過程返回多個結果 發布:2025-01-28 03:24:03 瀏覽:462
長安歐尚科賽哪個配置值得購買 發布:2025-01-28 03:19:35 瀏覽:115
c全排列演算法 發布:2025-01-28 03:18:16 瀏覽:753
梵蒂岡頂級時裝ftp 發布:2025-01-28 03:03:36 瀏覽:694
手游腳本有前途嗎 發布:2025-01-28 02:46:55 瀏覽:378
抓包編程 發布:2025-01-28 02:42:41 瀏覽:929
安卓平板上怎麼設置熱點 發布:2025-01-28 02:36:33 瀏覽:717
如何在手機上壓縮圖片 發布:2025-01-28 02:34:09 瀏覽:989
伺服器ip掛上公網 發布:2025-01-28 02:31:15 瀏覽:978
吃雞配置需要什麼條件 發布:2025-01-28 02:26:15 瀏覽:9