java 板


LINE

※ 引述《inmorelong (InMoreLong)》之铭言: 以下是小弟所写的程式码 import javax.imageio.*; // for ImageIO import java.io.*; // for File import java.awt.Color; import java.awt.image.*; // for BufferedImage import javax.swing.*; // for JFrame public class Binerize{ public static void main(String[] args){ File file = new File("C:\\0001.jpg"); if(!file.exists()){ JOptionPane.showMessageDialog(null,"File does not Exists!"); System.exit(0); } try { BufferedImage image = ImageIO.read(file); final int width = image.getWidth(); final int height = image.getHeight(); final int[][] pixel = new int[height][width]; int rgb = 0; for (int y = 0; y < height; y++){ for (int x = 0; x < width; x++) { rgb = image.getRGB(x, y); rgb = (((rgb>>16)&0xff)+((rgb>>8)&0xff)+(rgb&0xff))/3; rgb &= 0xff; pixel[y][x] = ((rgb)<<16) + ((rgb)<<8) + rgb; // 上面这行设定又有何意义 // 马上又被下面那段红色洗掉了 // 所以就可以把他注解掉 if(rgb < 68) { pixel[y][x] = 0; } else { pixel[y][x] = 255; } Color off = new Color(pixel[y][x],pixel[y][x],pixel[y][x]); image.setRGB(x, y, off.getRGB()); // 然而其实你只是要黑与白而已,何必 new 新的 Color 物件?? // 把红色到黄色那段改成 if(rgb < 68) { image.setRGB(x,y, Color.BLACK.getRGB()); } else { image.setRGB(x,y, Color.WHITE.getRGB()); } } } File newfile = new File("C:\\0003.jpg"); for (int y = 0; y < height; y++){ for (int x = 0; x < width; x++) { image.setRGB(x, y, pixel[y][x]); } } // 上面这两个 for-loop 有何用途??? // 这不就把黄色那行设定的 rgb 洗掉了 // 所以把这段注解掉 ImageIO.write(image, "jpg", newfile); } catch (IOException e) { JOptionPane.showMessageDialog(null,"IO ERROR!"); } } } // 改完之後深蓝色那行又变得不需要了,因此又可以注解掉 以上是我先前写好的程式码 目的是要把一张彩色图片先转成灰阶,再转为二值化(黑白) 但不知道为什麽,白色的部份终究会变蓝色的... ^^ // 其实会变成蓝色的原因并不是你说的地方,而是粉红色的地方 // 因为原本要是白色的地方你的 pixel[y][x] 会是 255 // setRBG(x,y,255) 就会让他变成了蓝色 有思考过应该是这行 Color off = new Color(pixel[y][x],pixel[y][x],pixel[y][x]); 似乎是这边出了问题,但不知道怎修改才好... 希望各位高手们不吝指教,帮帮小弟!! 感谢!! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.100.78.56
1F:推 tkcn:image.setRGB(x, y, pixel[y][x]); 这行错了吧? 05/30 01:56
--



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.74.9.2
2F:→ csihcs:rgb = (((rgb>>16)&0xff)+((rgb>>8)&0xff)+(rgb&0xff))/3; 05/30 03:19
因为这句 rgb 一定是在 0 ~ 0xff 之间 所以他下面的 rgb &= 0xff 变成了多此一举 ※ 编辑: csihcs 来自: 211.74.9.2 (05/30 03:21)
3F:推 inmorelong:成功了!! 真的很感谢您 Q_______________________Q 05/30 12:29







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP