這幾天剛好在做這樣的事情,不過我的影像資料是raw格式的,
所以不必處理Header...
DataInputStream dis = new DataInputStream(new FileInputStream("檔名"));
for(int i = 0;i < 512;i++) {
for(int j = 0;j < 512;j++) {
array[i][j] = dis.readUnsignedByte(); //這是8位元的影像資料
array[i][j] = dis.readUnsignedShort(); //16位元
}
}
readUnsignedByte() or readUnsignedShort()
的傳回值是int,所以就存到一個int陣列中.
接下來就是處理陣列中每個位置的資料...
處理完後...
DataOutputStream dos = new DataOutputStream(new FileOutputStream("檔名"));
for(int i = 0;i < 512;i++) {
for(int j = 0;j < 512;j++) {
dos.writeByte((byte)(array[i][j]));
}
}
這樣就可以了!!
至於*.jpg這類有Header的資料我沒有處理過,
所以幫不上忙,希望回這篇能給你個參考!
--
[0m ╦═╮ [1;31m Origin:
[0;32m ╬═╯ [1;37m 作者來自 sw68-149-241.adsl.seed.net.tw
[1;32m ╩erl [1;36m 蔚藍海岸 [1;33m perl.tcu.edu.tw [1;32m (203.64.78.33) [0m
那可不可以請問一下..~如果適用C++的話...
怎麼去處理影像呢...??~也是去讀取影像然後存在陣列裡...
讀的是.bmp的話...謝謝....
--
[m [1;37m※ 來源:‧交大電控BBS www.cn.nctu.edu.tw‧[FROM: pc14983.cn.nctu] [m
C++的話
引入fstream.h
#include<fstream.h>
建立fstream物件
fstream inf;
inf.open("檔名",ios::in|ios::binary);
利用迴圈將資料讀入陣列
for(int i = 0;i < height;i++)
{
for(int j = 0;j < width;j++)
{
array[i][j] = (轉型)inf.get();
}
}
這樣就可以了
至於*.bmp的檔案我沒有處理過 :p
good luck!
--
[0m ╦═╮ [1;31m Origin:
[0;32m ╬═╯ [1;37m 作者來自 140.121.176.32