Java 如何删除除特定rgb值以外的所有颜色
好的,我需要让程序扫描屏幕上的某个rgb值,然后将其更改为亮粉色。我制作了这个程序,到目前为止,它会扫描屏幕上的某种颜色。我不知道如何让它改变像素的颜色。我想我需要上传一张图片,而不是让它扫描屏幕。但是如果我这样做,我仍然不知道如何改变像素 这是到目前为止我的代码Java 如何删除除特定rgb值以外的所有颜色,java,image,colors,rgb,Java,Image,Colors,Rgb,好的,我需要让程序扫描屏幕上的某个rgb值,然后将其更改为亮粉色。我制作了这个程序,到目前为止,它会扫描屏幕上的某种颜色。我不知道如何让它改变像素的颜色。我想我需要上传一张图片,而不是让它扫描屏幕。但是如果我这样做,我仍然不知道如何改变像素 这是到目前为止我的代码 import java.awt.AWTException; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer;
import java.awt.image.DataBufferInt;
import java.awt.image.WritableRaster;
public class FindRgbOnScreen extends Thread{
public Rectangle captureSize;
public FindRgbOnScreen() {
captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
}
public void run() {
try {
Robot robot = new Robot();
while(true){
BufferedImage img = robot.createScreenCapture(captureSize);
WritableRaster r = img.getRaster();
DataBuffer db = r.getDataBuffer();
DataBufferInt dbi = (DataBufferInt)db;
int[] data = dbi.getData();
for (int x_scale = 0; x_scale < captureSize.width; x_scale += 1) { //this scans the screen
for(int y_scale = 0; y_scale < captureSize.height; y_scale += 1) {
int rgb = data[x_scale + captureSize.width * y_scale];
if (rgb == -5381164){
//change pixel to pink
}
else{
//change pixel to grey
}
}
}
}
}
catch(AWTException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new FindRgbOnScreen().start();
}
}
import java.awt.AWTException;
导入java.awt.Rectangle;
导入java.awt.Robot;
导入java.awt.Toolkit;
导入java.awt.image.buffereImage;
导入java.awt.image.DataBuffer;
导入java.awt.image.DataBufferInt;
导入java.awt.image.WritableRaster;
公共类FindRGOnScreen扩展线程{
公共矩形captureSize;
public FindRGOnScreen(){
captureSize=新矩形(Toolkit.getDefaultToolkit().getScreenSize());
}
公开募捐{
试一试{
机器人=新机器人();
while(true){
BuffereImage img=robot.createScreenCapture(captureSize);
WritableRaster r=img.getRaster();
DataBuffer db=r.getDataBuffer();
DataBufferInt dbi=(DataBufferInt)db;
int[]data=dbi.getData();
对于(int x_scale=0;x_scale
看看这些帖子。您应该使用ColorModel
,这是进行像素颜色替换而不是迭代像素的最快方法: