From f7c460ca9e40028a2c472971f160ae6e10498266 Mon Sep 17 00:00:00 2001 From: wangbing Date: Thu, 25 Sep 2025 08:49:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=A4=87=E4=BB=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 20 +++++ legend/我的电脑.png | Bin 0 -> 2709 bytes legend/文件夹.png | Bin 0 -> 931 bytes legend/此电脑.png | Bin 0 -> 1392 bytes pom.xml | 76 ++++++++++++++++++ .../java/xyz/wbsite/sikulix/屏幕找图.java | 26 ++++++ .../java/xyz/wbsite/sikulix/识别文字.java | 16 ++++ .../java/xyz/wbsite/sikulix/鼠标操作.java | 11 +++ 8 files changed, 149 insertions(+) create mode 100644 .gitignore create mode 100644 legend/我的电脑.png create mode 100644 legend/文件夹.png create mode 100644 legend/此电脑.png create mode 100644 pom.xml create mode 100644 src/main/java/xyz/wbsite/sikulix/屏幕找图.java create mode 100644 src/main/java/xyz/wbsite/sikulix/识别文字.java create mode 100644 src/main/java/xyz/wbsite/sikulix/鼠标操作.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1f128fe --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +/.idea +*.iml +/.settings +/bin +/gen +/build +/gradle +/classes +.classpath +.project +*.gradle +gradlew +local.properties +node_modules/ diff --git a/legend/我的电脑.png b/legend/我的电脑.png new file mode 100644 index 0000000000000000000000000000000000000000..34f2d03a2ebbb0130860fe8bec6ed23a94d50464 GIT binary patch literal 2709 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 FV1i>Bwiy5b literal 0 HcmV?d00001 diff --git a/legend/此电脑.png b/legend/此电脑.png new file mode 100644 index 0000000000000000000000000000000000000000..5869a9e9ae3da61e0123556d41208baecf7f77ca GIT binary patch literal 1392 zcmV-$1&{iPP)h&RTMt6g3RolA)UaE%r|p!%vHt`4f1w%D zUu9^jffWGIv6@m+h$az3+UY)SmQT7hrMH5Rh@lXj+=4TPx+5B_$XwyaBY&?rC<1VE zKbX?G?m#ogvm5|GMD59>W5v*NmTxcgEZlP%F{GWQ5JMuyz>1Eu-`zOpaR7k!!_}J( z1Q-B#U}i<_)b^T%dwxMQ%Q;z&?~kb$P3laNUkvBpA0PUcl_ci)jzxCR|Bg$ zF4}nFQTLcdCv);C#60|F%^Ql;<`)e-A{rmk(Gt+&(dbvRUF)1AqDjOUnhF4{gLmfU z^SNV5#Pmgzy0M0;hJ#@(7F7dHegemDih-81ra4TDVeFs0^-A4?`zz-h4ar3j&~NxJ zoi#L7S4YKR9QKQTtWt;>(HV_&i0uKdt_iW6DvvoIz*mc_$EQX8k6 zW?gc9Vs*P5k_aLSmv@xp?JM){1t{L;UEPw`@S<5?dVD&(GyLN6^XqR_Zt_Vi=ge~4 zR-4`%ZfI&a)TwvJtWRHUiOpssgil0pmlML83u%q3vD#Hw2CJqNzH5YDe>gZ-~+#3&yjY69A0tr56u-gtda;{o@osSu(=0`NDgrfFMr4pPxT* zt5`iiqRdPcKP2Q;dJ>6*dHgkkumOM^Y8&O?yR{D3x1eCLfQ$a}% zN~52g2!Ea{E}H@3rL=f?l^)YH%|s%RNF>tv8?ZK{oql;^?GhJ&$DHxmWLJSoA{qc@ zeA>9Ht7{hkKw$U0>#T#%a_}tYG_V5D{8Qtqx-_N$T0ei`zE^54*KGaJG@k=-FTT*c zzr?xSYQA>H(3I@CJD0Hn>)`tj2V(t^o)?7_@Jazu@{5vRBoWPWP6{yqpkoC93{3$5 z*5Ne4)#AIm+Ae0l + + 4.0.0 + xyz.wbsite + starter-sikuli-x + 0.1 + jar + starter-sikuli-x + project for starter-sikuli-x + + + UTF-8 + UTF-8 + 8 + true + + + + + + aliyun + Aliyun Repository + default + https://maven.aliyun.com/repository/public + + + + + + aliyun + Aliyun Repository + https://maven.aliyun.com/repository/public + default + + + + + + cn.hutool + hutool-all + 5.8.26 + + + + com.sikulix + sikulixapi + 2.0.5 + + + + + + ${artifactId}-${version} + src/main/java + + + src/main/resources + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + + + diff --git a/src/main/java/xyz/wbsite/sikulix/屏幕找图.java b/src/main/java/xyz/wbsite/sikulix/屏幕找图.java new file mode 100644 index 0000000..f9e0f2c --- /dev/null +++ b/src/main/java/xyz/wbsite/sikulix/屏幕找图.java @@ -0,0 +1,26 @@ +package xyz.wbsite.sikulix; + +import cn.hutool.core.util.StrUtil; +import org.sikuli.script.FindFailed; +import org.sikuli.script.Match; +import org.sikuli.script.Screen; +import org.sikuli.script.Pattern; + +import java.io.File; +import java.util.Iterator; + +public class 屏幕找图 { + public static void main(String[] args) throws FindFailed { + Screen screen = new Screen(); + Pattern button = new Pattern(new File("legend/文件夹.png") + .getAbsolutePath()) + .similar(0.7f); + // 相似度阈值 0.8 + Iterator all = screen.findAll(button);// 找到按钮位置 + + while (all.hasNext()){ + Match next = all.next(); + System.out.println(StrUtil.format("位置: {} 相似度: {}", next.getRect(), next.getScore())); + } + } +} diff --git a/src/main/java/xyz/wbsite/sikulix/识别文字.java b/src/main/java/xyz/wbsite/sikulix/识别文字.java new file mode 100644 index 0000000..45da1e8 --- /dev/null +++ b/src/main/java/xyz/wbsite/sikulix/识别文字.java @@ -0,0 +1,16 @@ +package xyz.wbsite.sikulix; + +import org.sikuli.script.FindFailed; +import org.sikuli.script.Screen; + +import java.io.File; + +public class 识别文字 { + + public static void main(String[] args) throws FindFailed { + Screen screen = new Screen(); + + String text = screen.find(new File("legend/此电脑.png").getAbsolutePath()).text(); + System.out.println("识别到文字: " + text); + } +} diff --git a/src/main/java/xyz/wbsite/sikulix/鼠标操作.java b/src/main/java/xyz/wbsite/sikulix/鼠标操作.java new file mode 100644 index 0000000..fc9b38e --- /dev/null +++ b/src/main/java/xyz/wbsite/sikulix/鼠标操作.java @@ -0,0 +1,11 @@ +package xyz.wbsite.sikulix; + +import org.sikuli.script.Location; +import org.sikuli.script.Mouse; + +public class 鼠标操作 { + + public static void main(String[] args) { + Mouse.move(new Location(100, 100)); + } +}