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.awt.image.BufferedImage的逐點過濾,保存成內存圖片輸出
try {
BufferedImage top = ImageIO.read(new File("img/頂色.png"));
BufferedImage bot = ImageIO.read(new File("img/底色.png"));
BufferedImage result = new BufferedImage(top.getWidth(),top.getHeight(),BufferedImage.TYPE_INT_ARGB);
for(int height = 0; height<bot.getHeight(); height++){
for(int width = 0; width<bot.getWidth(); width++){
result.setRGB(width, height, top.getRGB(width, height)|bot.getRGB(width, height));
}
}
ImageIO.write(result, "png", new File("img/result.png"));//write()函數將result對象中的內容保存段頃槐到result.png圖片握友乎昌中
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
目錄結構
❸ java中對文件進行讀寫操作的基本類是什麼
Java.io包中包括許多類提供枝岩許多有關文件的各個方面操作。
1 輸入輸出抽象基類InputStream/OutputStream ,實現文件內容操作猛磨御的基本功能函數read()、 write()、close()、skip()等;一般都是創建出其派生類對象(完成指定的特殊功能)來實現文件讀寫。在文件讀寫的編程過程中主要應該注意異常處理的技術。
2 FileInputStream/FileOutputStream:
用於本地文件讀寫(二進制格式讀寫並且是順序讀寫,讀和寫要分別創建出不同的文件流對象);
本地文件讀寫編程的基本過程為:
① 生成文件流對象(對文件讀操作時應該為FileInputStream類,而文件寫應該為FileOutputStream類);
② 調用FileInputStream或FileOutputStream類中的功能函數如read()、write(int b)等)讀寫文件內容;
③ 關閉文件(close())。
3 PipedInputStream/PipedOutputStream:
用於管道輸入輸出(將一個程序或一個線程的輸出結果直接連接到另一個程序或一個線程的輸入埠,實現兩者數據直接傳送。操作時需要連結);
4管道的連接:
方法之一是通過構造函數直接將某一個程序的輸出作為另一個程序的輸入,在定義對象時指明目標管道對象
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream(pInput);
方法之二是利用雙方類中的任一個成員函數 connect()相連接
PipedInputStream pInput=new PipedInputStream();
PipedOutputStream pOutput= new PipedOutputStream();
pinput.connect(pOutput);
5 管道的輸入與輸出:
輸出管道對象調用write()成員函數輸出數據(即向管道的輸入端發送數據);而輸入管道對象調用read()成員函數可以讀起數據(即從輸出管道中獲得數據)。這主要是藉助系統所提供的緩沖機制來實現的。
6隨機文件讀寫:
RandomAccessFile類(它直接繼承於Object類而非InputStream/OutputStream類),從而可以實現讀寫文件中任何位置中的數游盯據(只需要改變文件的讀寫位置的指針)。
隨機文件讀寫編程的基本過程為:
① 生成流對象並且指明讀寫類型;
② 移動讀寫位置;
③ 讀寫文件內容;
④ 關閉文件。
七里河團隊答疑助人,希望我的回答對你有所幫助
❹ 請問下java中導出圖片怎麼做
package com.xolt;
import java.io.FileOutputStream;
import java.io.File;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.awt.image.BufferedImage;
import javax.imageio.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;;
public class TestPOI {
public static void main(String[] args) {
FileOutputStream fileOut = null;
BufferedImage bufferImg =null;
BufferedImage bufferImg1 = null;
try{
//先把讀進來的圖片放到一個ByteArrayOutputStream中,以便產生ByteArray
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
ByteArrayOutputStream byteArrayOut1 = new ByteArrayOutputStream();
bufferImg = ImageIO.read(new File("C:/Documents and Settings/dingqi/Desktop/clip_image002.jpg"));
bufferImg1 = ImageIO.read(new File("C:/Documents and Settings/dingqi/Desktop/clip_image002.jpg"));
ImageIO.write(bufferImg,"jpg",byteArrayOut);
ImageIO.write(bufferImg1,"jpg",byteArrayOut1);
//創建一個工作薄
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet1 = wb.createSheet("poi picT");
//HSSFRow row = sheet1.createRow(2);
HSSFPatriarch patriarch = sheet1.createDrawingPatriarch();
HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,512,255,(short) 1,1,(short)10,20);
HSSFClientAnchor anchor1 = new HSSFClientAnchor(0,0,512,255,(short) 2,30,(short)10,60);
anchor1.setAnchorType(2);
//插入圖片
patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
patriarch.createPicture(anchor1 , wb.addPicture(byteArrayOut1.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
fileOut = new FileOutputStream("c:/workbook.xls");
//寫入excel文件
wb.write(fileOut);
fileOut.close();
}catch(IOException io){
io.printStackTrace();
System.out.println("io erorr : "+ io.getMessage());
} finally
{
if (fileOut != null)
{
try {
fileOut.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
poi中圖片到到excel的方法 你需要准備poi包 試試看看
❺ java android的url 讀取網路資源,獲得inputstream後,獲得圖片後,關is
第一次是為了判斷圖片是否存在,第二次是獲取圖片的位元組流。
❻ java連續發送和接收幾張圖片位元組流
在接收端獲得輸入流in_stream2並在for的第一個循環中的while(in_stream2.read(b_image)>0)
中全部讀出來了,所以會出現你說的那個結果
具體解決辦法是有很多種,可以在發送端申明一個數組,存放文件的大小一起發送給接收端,接收端的while(in_stream2.read(b_image)>0)中再加以處理。
❼ 關於Java文件位元組流的問題
兩個小問題
第一
fw.write(a[i]+" ");//這里要寫成" "兄塵彎表示空白兄裂
第二 用一個int[] a 接受函數的返羨悶回值
int[]a=Data_generate(2000,10000);
WriteToTxt(a);
效果圖
❽ 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();
(8)java位元組流圖片擴展閱讀:
如果是純文本使用字元流,如果二進制文件,使用位元組流。
如果只是得到信息,原樣不動,不進行修改操作,例如文件上傳和下載,這時就使用位元組流。文件上傳:在伺服器端把瀏覽器端信息提取出來。文件下載:把伺服器端內容寫給瀏覽器端。
如果要操作的是自定義信息,這時使用字元流。
通過response獲取的輸出流它的真實類型是什麼?
ServletOutputStream response.getOutputStream();
PrintWriter response.getWriter();
ServletOutputStream由於使用位元組流多數是原樣復制,所以使用write方法,而不是print方法。
PrintWriter:列印流,兩個特點:1.可以設置自動刷新。2.可以將信息原樣輸出。
❾ java中位元組流讀寫和字元流讀寫哪個效率更高
Java流在處理上分為字元流和位元組流。字元流處理的單元為2個位元組的Unicode字元,分別操作字元、字元慎漏歲數組或字元串,而位元組流處理單元為1個位元組,操作位元組和位元組數搜裂組。Java內用Unicode編碼存儲字元,字元流處理類負責寬睜將外部的其他編碼的
❿ 請問java怎樣將一個outputstream位元組流保存成圖片格式
ImageIO 支持流直接生成圖片