|
|
|
@ -1,18 +1,18 @@
|
|
|
|
|
package xyz.wbsite.jmacro.tool;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
|
|
import cn.hutool.core.util.NumberUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.hutool.log.StaticLog;
|
|
|
|
|
import xyz.wbsite.jmacro.util.Logger;
|
|
|
|
|
|
|
|
|
|
import javax.swing.*;
|
|
|
|
|
import java.awt.*;
|
|
|
|
|
import java.awt.event.KeyAdapter;
|
|
|
|
|
import java.awt.event.KeyEvent;
|
|
|
|
|
import java.awt.event.MouseAdapter;
|
|
|
|
|
import java.awt.event.MouseEvent;
|
|
|
|
|
import java.awt.event.MouseMotionAdapter;
|
|
|
|
|
import java.awt.event.WindowAdapter;
|
|
|
|
|
import java.awt.event.WindowEvent;
|
|
|
|
|
import java.awt.event.*;
|
|
|
|
|
import java.awt.image.BufferedImage;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 采集区域
|
|
|
|
@ -120,10 +120,40 @@ public class PickRect extends JFrame {
|
|
|
|
|
Logger.info("=========================区域采集=========================");
|
|
|
|
|
Logger.info("屏幕区域:[{},{},{},{}]", left, top, right, bottom);
|
|
|
|
|
Logger.info("相对区域:[{},{},{},{}]", left - originX, top - originY, right - originX, bottom - originY);
|
|
|
|
|
|
|
|
|
|
Logger.info("-------------------");
|
|
|
|
|
Logger.info("色值统计(TOP5):");
|
|
|
|
|
List<String> colors = new ArrayList<>();
|
|
|
|
|
for (int y = top; y < bottom; y++) {
|
|
|
|
|
for (int x = left; x < right; x++) {
|
|
|
|
|
colors.add("#" + Integer.toHexString(capture.getRGB(x, y) & 0xFFFFFF));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Map<String, Integer> countMap = new HashMap<>();
|
|
|
|
|
for (String c : colors) {
|
|
|
|
|
countMap.put(c, countMap.getOrDefault(c, 0) + 1);
|
|
|
|
|
}
|
|
|
|
|
LinkedHashMap<String, Integer> sim = (LinkedHashMap<String, Integer>) MapUtil.sortByValue(countMap, true);
|
|
|
|
|
|
|
|
|
|
int topP = 1;
|
|
|
|
|
int length = StrUtil.length(colors.size() + "");
|
|
|
|
|
List<String> topColor = new ArrayList<>();
|
|
|
|
|
for (String c : sim.keySet()) {
|
|
|
|
|
if (topP > 6) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
double v = 1.0D * sim.get(c) / colors.size();
|
|
|
|
|
if (v > 0.01D) {
|
|
|
|
|
topP++;
|
|
|
|
|
topColor.add(c);
|
|
|
|
|
Logger.info("{} {} {}", c, StrUtil.padPre(Convert.toStr(sim.get(c)), length, "0"), NumberUtil.formatPercent(1.0D * sim.get(c) / colors.size(), 0));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
Logger.info("-------------------");
|
|
|
|
|
Logger.info("用法示例:");
|
|
|
|
|
Logger.info("1、区域点击:mouseLeftClick(of({},{},{},{}));", left - originX, top - originY, right - originX, bottom - originY);
|
|
|
|
|
Logger.info("2、区域查找:findLegend(of({},{},{},{}), \"按钮\", 0.99);", left - originX, top - originY, right - originX, bottom - originY);
|
|
|
|
|
Logger.info("区域点击:macro.mouseLeftClick(macro.of({},{},{},{}));", left - originX, top - originY, right - originX, bottom - originY);
|
|
|
|
|
Logger.info("区域查找:macro.findLegend(macro.of({},{},{},{}), \"按钮\", 0.99);", left - originX, top - originY, right - originX, bottom - originY);
|
|
|
|
|
Logger.info("区域查色:macro.findColor(macro.of({},{},{},{}), \"{}\");", left - originX, top - originY, right - originX, bottom - originY, topColor.get(0));
|
|
|
|
|
Logger.info("区域找色:macro.hasColor(macro.of({},{},{},{}), \"{}\");", left - originX, top - originY, right - originX, bottom - originY, String.join("\",\"", topColor));
|
|
|
|
|
|
|
|
|
|
Logger.info("=========================区域采集=========================");
|
|
|
|
|
close();
|
|
|
|
@ -157,6 +187,25 @@ public class PickRect extends JFrame {
|
|
|
|
|
setVisible(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
|
|
|
|
|
List<String> colors = new ArrayList<>();
|
|
|
|
|
colors.add("ffffff");
|
|
|
|
|
colors.add("000000");
|
|
|
|
|
colors.add("111111");
|
|
|
|
|
colors.add("111111");
|
|
|
|
|
colors.add("111111");
|
|
|
|
|
|
|
|
|
|
Map<String, Integer> countMap = new LinkedHashMap<>();
|
|
|
|
|
for (String c : colors) {
|
|
|
|
|
countMap.put(c, countMap.getOrDefault(c, 0) + 1);
|
|
|
|
|
}
|
|
|
|
|
Map<String, Integer> sim = MapUtil.sortByValue(countMap, true);
|
|
|
|
|
for (String s : sim.keySet()) {
|
|
|
|
|
System.out.println(s + " ==> " + sim.get(s) + "" + NumberUtil.formatPercent(sim.get(s) / colors.size(), 0));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doLayout() {
|
|
|
|
|
super.doLayout();
|
|
|
|
|