[問題] 還是.bmp檔案的問題 ~"~

看板java作者 (我是聖棋請多指教)時間18年前 (2007/10/21 20:00), 編輯推噓4(400)
留言4則, 3人參與, 最新討論串1/7 (看更多)
先感謝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
程式是對的..因為左上角那邊都沒大於120 當然是白色
10/22 13:42, 3F

10/22 13:45, , 4F
阿 不對...拍賽,只隨便點了幾個點
10/22 13:45, 4F
※ 編輯: shiengchyi 來自: 140.112.90.113 (10/22 16:10)
文章代碼(AID): #176pz2VQ (java)
討論串 (同標題文章)
文章代碼(AID): #176pz2VQ (java)