需求:获得图片中的白点,然后处理白点成红色。现在要实现的是获得白点,处理成红色不在考虑范围内。
例子:
源码:<%@page import="java.awt.image.*,javax.imageio.ImageIO,java.io.*"%><%
BufferedImage image = ImageIO.read(new File(this.getServletContext().getRealPath(request.getAttribute("path").toString())));
out.println("<script>var xyArr = new Array();</script>");
int width = image.getWidth();
width=width*8;
int height = image.getHeight();
height=height*8;
int size = width * height; int[] pixels = new int[size];
int foreground_data[][] = new int[width][height]; PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, width,
height, pixels, 0, width);
try {
pixelgrabber.grabPixels();
} catch (InterruptedException _ex) {
} int numSize = 0; DirectColorModel dcm = (DirectColorModel) ColorModel.getRGBdefault();
out.println("<script>"); for (int h = 0; h < height; h++) {
for (int w = 0; w < width; w++) {
int num = numSize++;
foreground_data[w][h] = pixels[num]; int red = dcm.getRed(pixels[num]);
int green = dcm.getGreen(pixels[num]);
int blue = dcm.getBlue(pixels[num]);
if (red == 255 && green == 255 && blue == 255){
out.println("xyArr.push(\""+(w+","+h)+"\")"); }
}
} out.println("</script>"); out.flush();
%>问题:现在可以点击白点,但是非常不灵敏,想点到白点就有响应,但是现在来看必须点到白点内某个点才有响应,帮忙修改一下使得灵敏度变高,或者提供其他代码。
解决给分
例子:
源码:<%@page import="java.awt.image.*,javax.imageio.ImageIO,java.io.*"%><%
BufferedImage image = ImageIO.read(new File(this.getServletContext().getRealPath(request.getAttribute("path").toString())));
out.println("<script>var xyArr = new Array();</script>");
int width = image.getWidth();
width=width*8;
int height = image.getHeight();
height=height*8;
int size = width * height; int[] pixels = new int[size];
int foreground_data[][] = new int[width][height]; PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, width,
height, pixels, 0, width);
try {
pixelgrabber.grabPixels();
} catch (InterruptedException _ex) {
} int numSize = 0; DirectColorModel dcm = (DirectColorModel) ColorModel.getRGBdefault();
out.println("<script>"); for (int h = 0; h < height; h++) {
for (int w = 0; w < width; w++) {
int num = numSize++;
foreground_data[w][h] = pixels[num]; int red = dcm.getRed(pixels[num]);
int green = dcm.getGreen(pixels[num]);
int blue = dcm.getBlue(pixels[num]);
if (red == 255 && green == 255 && blue == 255){
out.println("xyArr.push(\""+(w+","+h)+"\")"); }
}
} out.println("</script>"); out.flush();
%>问题:现在可以点击白点,但是非常不灵敏,想点到白点就有响应,但是现在来看必须点到白点内某个点才有响应,帮忙修改一下使得灵敏度变高,或者提供其他代码。
解决给分
解决方案 »
- java 正则表达式只匹配一个等号不能匹配双等号
- java char类型会有负值吗
- 字符集编码问题
- 已知一个类型 如ArrayList 如何生成一个对象 注:ArrayList是个字符串
- 关于setEchoChar()的一个疑问
- 请问java.net.SocketException: Default SSL context init failed:是什么错误
- 帮忙看看!
- 什么是ERP软件实施
- 如何判断键盘输入的是一个空字符串?
- 想在深圳找一份java程序员的工作?不知道怎么样?
- java 如何将数据库获得的数据显示在jtable中
- 为什么同一个字符会有2个编码???只有4行的小程序,高手进来看看
改成:
if (red == 0 && green == 0 && blue == 0)效果会好点.
width=width*8;
height=height*8;
本来直接像素点就是图片宽*高了,不要8的。但是改了8后,没什么效果。
改了这个没有什么效果的。处理成方块是我在另一个jsp文件里用脚本处理的。怎么改都是方块!
我只是想能够获得更好的灵敏性。flash如何做?关键是不懂。
http://www.phpx.com/man/dhtmlcn/colors/colors.html
这里是颜色表,我找出了里面差不多是白色的颜色,计算出大小,设置成如下
if ((red<=255&&red>=245)&&(green<=255&&green>=245)&&(blue<=255&&blue>=238))响应加快了很多。