【问题标题】:How to remove all color except a certain rgb value如何删除除某个 rgb 值之外的所有颜色
【发布时间】:2013-06-01 20:54:22
【问题描述】:

好的,我需要让程序扫描屏幕以获取某个 rgb 值,然后将其更改为亮粉色。我制作了这个程序,到目前为止它会扫描屏幕上的某种颜色。我不知道如何让它改变像素颜色。我想我需要上传图片而不是让它扫描屏幕。但如果我这样做,我仍然不知道如何改变像素。

这是我目前的代码。

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();
    }
}

【问题讨论】:

  • 只需遍历图像并将您想要的所有 rgb 更改为洋红色?
  • 您应该尝试自己解决问题,如果您有具体问题再回来。 StackOverflow 不是代码编写服务。
  • 我不知道是否有一个图片编辑器已经可以做到这一点。
  • 添加了代码。任何帮助都会很棒!
  • 好的,你的代码目前在做什么?它不做什么?你看到了什么错误?等等……

标签: java image colors rgb


【解决方案1】:

看看这些帖子。您应该使用ColorModel,这是进行像素颜色替换而不是迭代像素的最​​快方法:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多