[問題] 還是.bmp檔案的問題 ~"~
先感謝h45大大的熱心解答,不過真如同h45大所說,出現怪問題了...~"~
原圖檔連結: http://shiengchyi.250free.com/lena.bmp
程式連結: http://shiengchyi.250free.com/r96922076_hw2.java
輸出結果連結:http://shiengchyi.250free.com/test.bmp
正確輸出連結:http://shiengchyi.250free.com/lena_binary.bmp (使用mathlab)
先附上我個人覺得可能會有問題的地方
下面是把圖檔中的RGB值超過128的設定為255 小於128的設定為0
data[][],tmp,numA,numR,numG,numB的型態皆為int
for(i=0;i<imgR.getHeight();i++)
{
for(j=0;j<imgR.getWidth();j++)
{
numA=(imgR.getRGB(j,i) & 0xff000000)>>24; //抓取alpha
numR=(imgR.getRGB(j,i) & 0xff0000)>>16; //抓取red
numG=(imgR.getRGB(j,i) & 0xff00)>>8; //抓取green
numB=(imgR.getRGB(j,i) & 0xff); //抓取blue
if(numR>=128) //大於128則設定成255
numR=255;
else //小於128則設定成0
numR=0;
if(numG>=128) //大於128則設定成255
numG=255;
else //小於128則設定成0
numG=0;
if(numB>=128) //大於128則設定成255
numB=255;
else //小於128則設定成0
numB=0;
tmp=(((byte)numA)<<24)+(((byte)numR)<<16)+(((byte)numG)<<8)+(byte)numB;
//轉換後存到data的2維Aray中
data[i][j]=tmp;
}
}
問題出在,我的輸出結果和正確的結果不同(迷之聲:廢話)
當然,小弟我做了其他測試...
測試一:不要對RGB的數值作設定,維持原圖的數值後輸出(也就是把那些if else註解)
結果一:和原圖檔一模一樣
測試二:在寫入圖檔的設定上,把寫入的顏色形態更改成TYPE_BYTE_BINARY,
不做RGB數值設定
結果二:很好,跟我自己手動設定的輸出結果一樣,是錯誤的 ~"~
測試三:最後合併numA numR numG numB的時候,把(byte)去除,維持原來int的型態
結果三:還是錯誤的輸出結果 T^T
測試四:因為原始圖檔為灰階,所以將if else之後(含if else)的程式碼修改如下:
if(numB>=128)
data[i][j]=0xffffffff;
else
data[i][j]=0xff000000;
結果四:還是錯誤的結果...(迷之聲:XXX XXX...)
以上是小弟我目前所做的測試,苦於無法解決問題,有請板上java神人幫忙解答,感激
新增連結:
結果一的輸出(rgb in text):http://shiengchyi.250free.com/result1.txt
錯誤的輸出 (rgb in text):http://shiengchyi.250free.com/test.txt
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.90.113
推
10/21 20:40, , 1F
10/21 20:40, 1F
推
10/21 20:52, , 2F
10/21 20:52, 2F
推
10/22 13:42, , 3F
10/22 13:42, 3F
推
10/22 13:45, , 4F
10/22 13:45, 4F
※ 編輯: shiengchyi 來自: 140.112.90.113 (10/22 16:10)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 7 篇):