取得图片某一点(x,y)颜色,判断是深色域,还是浅色域?
做了一个水印功能,但是水印如果遇到深色图片就会不显示,故想此方法,准备两张水印,一张浅色logo为深色图片使用,一张深色logo为浅色图片使用。水印方法我已经写完,就是不...
做了一个水印功能,但是水印如果遇到深色图片就会不显示,故想此方法,准备两张水印,一张浅色logo为深色图片使用,一张深色logo为浅色图片使用。
水印方法我已经写完,就是不会取图片某一点的颜色。再来如何判断该点为深色还是浅色?
这个问题貌似小难度哈,当然会者不难,求高人解答!!
aaronswon 十分彪悍
但这个程序还有个问题,我正如我说的,我要用在web服务器上,当用户在后台提交一个图片,加水印的时候,必须蹦出gui的这个窗口吗,可不可以隐藏,或者不让它出来啊 展开
水印方法我已经写完,就是不会取图片某一点的颜色。再来如何判断该点为深色还是浅色?
这个问题貌似小难度哈,当然会者不难,求高人解答!!
aaronswon 十分彪悍
但这个程序还有个问题,我正如我说的,我要用在web服务器上,当用户在后台提交一个图片,加水印的时候,必须蹦出gui的这个窗口吗,可不可以隐藏,或者不让它出来啊 展开
展开全部
//你要的功能已经实现,自己去试试吧,:b
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class BackroundImage extends JFrame
{
private static final long serialVersionUID = 1L;
JScrollPane scrollPane;
ImageIcon icon;
Image image;
Robot rb = null;
public BackroundImage()
{
//ken.jpg要位于此java文件项目目录下,我的ide :eclipse
icon = new ImageIcon("ken.jpg");
JPanel panel = new JPanel()
{
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g)
{
g.drawImage(icon.getImage(), 0, 0, null);
super.paintComponent(g);
}
};
panel.setOpaque( false );
panel.setPreferredSize( new Dimension(800, 600) );
panel.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
//转化成#ffffff格式
Color c = rb.getPixelColor(x, y);
String r = Integer.toHexString(c.getRed());
String g = Integer.toHexString(c.getGreen());
String b = Integer.toHexString(c.getBlue());
if(r.length() == 1) r += "0";
if(g.length() == 1) g += "0";
if(b.length() == 1) b += "0";
//color就是获得点颜色的字符串表示
String color = "#" + r + g +b;
System.out.println(color);
}
});
scrollPane = new JScrollPane( panel );
getContentPane().add( scrollPane );
init();
}
public void init() {
try {
rb = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
public static void main(String [] args)
{
BackroundImage frame = new BackroundImage();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class BackroundImage extends JFrame
{
private static final long serialVersionUID = 1L;
JScrollPane scrollPane;
ImageIcon icon;
Image image;
Robot rb = null;
public BackroundImage()
{
//ken.jpg要位于此java文件项目目录下,我的ide :eclipse
icon = new ImageIcon("ken.jpg");
JPanel panel = new JPanel()
{
private static final long serialVersionUID = 1L;
protected void paintComponent(Graphics g)
{
g.drawImage(icon.getImage(), 0, 0, null);
super.paintComponent(g);
}
};
panel.setOpaque( false );
panel.setPreferredSize( new Dimension(800, 600) );
panel.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
int x = e.getX();
int y = e.getY();
//转化成#ffffff格式
Color c = rb.getPixelColor(x, y);
String r = Integer.toHexString(c.getRed());
String g = Integer.toHexString(c.getGreen());
String b = Integer.toHexString(c.getBlue());
if(r.length() == 1) r += "0";
if(g.length() == 1) g += "0";
if(b.length() == 1) b += "0";
//color就是获得点颜色的字符串表示
String color = "#" + r + g +b;
System.out.println(color);
}
});
scrollPane = new JScrollPane( panel );
getContentPane().add( scrollPane );
init();
}
public void init() {
try {
rb = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
}
public static void main(String [] args)
{
BackroundImage frame = new BackroundImage();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}
展开全部
好像可以考虑用PixelGrabber将image的某个象素存到一个数组pixels中
下面这个例子是将整个图的所有象素存到一个数组pixels中,你对new PixelGrabber(image,0,0,iw,ih,pixels,0,iw)修改修改,应该就可以得到某个点的象素了吧。
pixels = new int[ iw*ih ];
PixelGrabber pg = new PixelGrabber(image,0,0,iw,ih,pixels,0,iw);
pg.grabPixels();
//下面是取红绿蓝的颜色值
int p = pixels[i];
int r = 0xff & ( p>>16 );
int g = 0xff & ( p>>8 );
int b = 0xff & ( p );
下面这个例子是将整个图的所有象素存到一个数组pixels中,你对new PixelGrabber(image,0,0,iw,ih,pixels,0,iw)修改修改,应该就可以得到某个点的象素了吧。
pixels = new int[ iw*ih ];
PixelGrabber pg = new PixelGrabber(image,0,0,iw,ih,pixels,0,iw);
pg.grabPixels();
//下面是取红绿蓝的颜色值
int p = pixels[i];
int r = 0xff & ( p>>16 );
int g = 0xff & ( p>>8 );
int b = 0xff & ( p );
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//这是个取任意点颜色的方法。。重要地方我给你加了提示。你看看吧
具体不懂的你问我 QQ:282919088
package 娱乐.桌面;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
public class PickColor extends JFrame implements Runnable{
private Robot robot;
private Color color = new Color(0, 0, 0);
private Point point;
private JPanel pane = new JPanel();
private JLabel label = new JLabel();
public PickColor(String title)
{
super(title);
label.setHorizontalAlignment(JLabel.CENTER);
getContentPane().add(pane, "Center");
getContentPane().add(label, "South");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,200);
setVisible(true);
new Thread(this).start();
}
public static void main(String[] args)
{
PickColor pc = new PickColor("PickColor");
}
public void run()
{
while(true)
{
try {
Thread.sleep(10);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
try
{
robot = new Robot();
point = MouseInfo.getPointerInfo().getLocation();
color = robot.getPixelColor(point.x, point.y); //获取某坐标的颜色
pane.setBackground(color);
label.setText("RGB(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")");// 获取颜色的值··你可以判读该值的大小判断是不是你需要的颜色
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
具体不懂的你问我 QQ:282919088
package 娱乐.桌面;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Robot;
public class PickColor extends JFrame implements Runnable{
private Robot robot;
private Color color = new Color(0, 0, 0);
private Point point;
private JPanel pane = new JPanel();
private JLabel label = new JLabel();
public PickColor(String title)
{
super(title);
label.setHorizontalAlignment(JLabel.CENTER);
getContentPane().add(pane, "Center");
getContentPane().add(label, "South");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,200);
setVisible(true);
new Thread(this).start();
}
public static void main(String[] args)
{
PickColor pc = new PickColor("PickColor");
}
public void run()
{
while(true)
{
try {
Thread.sleep(10);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
try
{
robot = new Robot();
point = MouseInfo.getPointerInfo().getLocation();
color = robot.getPixelColor(point.x, point.y); //获取某坐标的颜色
pane.setBackground(color);
label.setText("RGB(" + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue() + ")");// 获取颜色的值··你可以判读该值的大小判断是不是你需要的颜色
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Robot robot = new Robot();
robot.getPixelColor(x, y);
判断颜色深浅,不好意思,写不出来
robot.getPixelColor(x, y);
判断颜色深浅,不好意思,写不出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
添加一个鼠标点击监听,方法中取得点击处的坐标(x,y),在取得图片上(x,y)处的颜色,具体要我帮你写吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询