作者shiengchyi (我是圣棋请多指教)
站内java
标题[问题] 还是.bmp档案的问题 ~"~
时间Sun Oct 21 19:59:58 2007
先感谢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
1F:推 chrisho:图案连结有问题? 10/21 20:40
2F:推 shiengchyi:囧 我找找免费空间 10/21 20:52
3F:推 MonyemLi:程式是对的..因为左上角那边都没大於120 当然是白色 10/22 13:42
4F:推 MonyemLi:阿 不对...拍赛,只随便点了几个点 10/22 13:45
※ 编辑: shiengchyi 来自: 140.112.90.113 (10/22 16:10)