diff --git "a/\360\237\220\237\357\270\217\346\212\200\346\234\257\346\221\270\351\261\274\357\274\210\346\227\266\351\232\220\346\227\266\347\216\260\347\232\204\345\233\276\347\211\207+\344\270\215\346\226\255\347\247\273\345\212\250\347\232\204\345\233\276\347\211\207+\351\232\217\346\234\272\346\270\270\350\265\260\347\232\204\351\274\240\346\240\207+\351\232\217\346\234\272\346\211\223\345\274\200\346\265\217\350\247\210\345\231\250\357\274\211/src/main/java/com/fly/demo/ui/ImageMove.java" "b/\360\237\220\237\357\270\217\346\212\200\346\234\257\346\221\270\351\261\274\357\274\210\346\227\266\351\232\220\346\227\266\347\216\260\347\232\204\345\233\276\347\211\207+\344\270\215\346\226\255\347\247\273\345\212\250\347\232\204\345\233\276\347\211\207+\351\232\217\346\234\272\346\270\270\350\265\260\347\232\204\351\274\240\346\240\207+\351\232\217\346\234\272\346\211\223\345\274\200\346\265\217\350\247\210\345\231\250\357\274\211/src/main/java/com/fly/demo/ui/ImageMove.java" index d2126aa86cd0b54ed6b8953433162d2ee7e8feff..c3173f1c58a65f4adcc547b67d8429ebcc081a5e 100644 --- "a/\360\237\220\237\357\270\217\346\212\200\346\234\257\346\221\270\351\261\274\357\274\210\346\227\266\351\232\220\346\227\266\347\216\260\347\232\204\345\233\276\347\211\207+\344\270\215\346\226\255\347\247\273\345\212\250\347\232\204\345\233\276\347\211\207+\351\232\217\346\234\272\346\270\270\350\265\260\347\232\204\351\274\240\346\240\207+\351\232\217\346\234\272\346\211\223\345\274\200\346\265\217\350\247\210\345\231\250\357\274\211/src/main/java/com/fly/demo/ui/ImageMove.java" +++ "b/\360\237\220\237\357\270\217\346\212\200\346\234\257\346\221\270\351\261\274\357\274\210\346\227\266\351\232\220\346\227\266\347\216\260\347\232\204\345\233\276\347\211\207+\344\270\215\346\226\255\347\247\273\345\212\250\347\232\204\345\233\276\347\211\207+\351\232\217\346\234\272\346\270\270\350\265\260\347\232\204\351\274\240\346\240\207+\351\232\217\346\234\272\346\211\223\345\274\200\346\265\217\350\247\210\345\231\250\357\274\211/src/main/java/com/fly/demo/ui/ImageMove.java" @@ -60,11 +60,13 @@ public class ImageMove */ private static void move() { + int x = dialog.getX() + (RandomUtils.nextBoolean() ? 1 : -1) * RandomUtils.nextInt(10, 100); + int y = dialog.getY() + (RandomUtils.nextBoolean() ? 1 : -1) * RandomUtils.nextInt(10, 100); Dimension screenSize = dialog.getToolkit().getScreenSize(); Dimension dialogSize = dialog.getSize(); dialogSize.height = Math.min(screenSize.height, dialogSize.height); dialogSize.width = Math.min(screenSize.width, dialogSize.width); - dialog.setLocation(RandomUtils.nextInt(0, screenSize.width - dialogSize.height), RandomUtils.nextInt(0, screenSize.height - dialogSize.width)); + dialog.setLocation(x % screenSize.width, y % screenSize.height); dialog.setVisible(true); // 重新显示 // 移动鼠标 @@ -76,6 +78,6 @@ public class ImageMove public static void main(String[] args) { - Executors.newScheduledThreadPool(2).scheduleAtFixedRate(ImageMove::move, 2, 10, TimeUnit.SECONDS); + Executors.newScheduledThreadPool(2).scheduleAtFixedRate(ImageMove::move, 2, 5, TimeUnit.SECONDS); } } diff --git "a/\360\237\220\237\357\270\217\346\212\200\346\234\257\346\221\270\351\261\274\357\274\210\346\227\266\351\232\220\346\227\266\347\216\260\347\232\204\345\233\276\347\211\207+\344\270\215\346\226\255\347\247\273\345\212\250\347\232\204\345\233\276\347\211\207+\351\232\217\346\234\272\346\270\270\350\265\260\347\232\204\351\274\240\346\240\207+\351\232\217\346\234\272\346\211\223\345\274\200\346\265\217\350\247\210\345\231\250\357\274\211/src/main/java/com/fly/demo/ui/base/ImageUtils.java" "b/\360\237\220\237\357\270\217\346\212\200\346\234\257\346\221\270\351\261\274\357\274\210\346\227\266\351\232\220\346\227\266\347\216\260\347\232\204\345\233\276\347\211\207+\344\270\215\346\226\255\347\247\273\345\212\250\347\232\204\345\233\276\347\211\207+\351\232\217\346\234\272\346\270\270\350\265\260\347\232\204\351\274\240\346\240\207+\351\232\217\346\234\272\346\211\223\345\274\200\346\265\217\350\247\210\345\231\250\357\274\211/src/main/java/com/fly/demo/ui/base/ImageUtils.java" index d0c6d62258ef1df483233bd2afeda28ac408ea03..62d69390d03bc681c6e3d6e75fe87ff2835eb739 100644 --- "a/\360\237\220\237\357\270\217\346\212\200\346\234\257\346\221\270\351\261\274\357\274\210\346\227\266\351\232\220\346\227\266\347\216\260\347\232\204\345\233\276\347\211\207+\344\270\215\346\226\255\347\247\273\345\212\250\347\232\204\345\233\276\347\211\207+\351\232\217\346\234\272\346\270\270\350\265\260\347\232\204\351\274\240\346\240\207+\351\232\217\346\234\272\346\211\223\345\274\200\346\265\217\350\247\210\345\231\250\357\274\211/src/main/java/com/fly/demo/ui/base/ImageUtils.java" +++ "b/\360\237\220\237\357\270\217\346\212\200\346\234\257\346\221\270\351\261\274\357\274\210\346\227\266\351\232\220\346\227\266\347\216\260\347\232\204\345\233\276\347\211\207+\344\270\215\346\226\255\347\247\273\345\212\250\347\232\204\345\233\276\347\211\207+\351\232\217\346\234\272\346\270\270\350\265\260\347\232\204\351\274\240\346\240\207+\351\232\217\346\234\272\346\211\223\345\274\200\346\265\217\350\247\210\345\231\250\357\274\211/src/main/java/com/fly/demo/ui/base/ImageUtils.java" @@ -7,6 +7,7 @@ import java.net.MalformedURLException; import java.nio.charset.Charset; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.Stream; import javax.imageio.ImageIO; @@ -24,14 +25,14 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class ImageUtils { - private static Resource[] resources; + private static List images; static { try { - resources = getResources(); - log.info("resources.length: {}", resources.length); + images = Stream.of(getResources()).map(r -> readImage(r)).filter(i -> i != null).collect(Collectors.toList()); + log.info("images.length: {}", images.size()); } catch (IOException e) { @@ -51,6 +52,8 @@ public class ImageUtils { try (InputStream is = new ClassPathResource("images/urls.txt").getInputStream()) { + Resource[] jpegs = new PathMatchingResourcePatternResolver().getResources("classpath:images/*.jpeg"); + Resource[] pngs = new PathMatchingResourcePatternResolver().getResources("classpath:images/*.png"); List urlResources = IOUtils.readLines(is, Charset.defaultCharset()).stream().filter(StringUtils::isNotBlank).map(url -> { try { @@ -62,8 +65,6 @@ public class ImageUtils return null; } }).filter(r -> r != null).collect(Collectors.toList()); - Resource[] jpegs = new PathMatchingResourcePatternResolver().getResources("classpath:images/*.jpeg"); - Resource[] pngs = new PathMatchingResourcePatternResolver().getResources("classpath:images/*.png"); // 本地与Url图片资源合并 return ArrayUtils.addAll(ArrayUtils.addAll(jpegs, pngs), urlResources.toArray(new Resource[0])); @@ -71,14 +72,14 @@ public class ImageUtils } /** - * 返回随机图片 + * 转换为BufferedImage * + * @param resource * @return */ - public static BufferedImage getRandomImage() + private static BufferedImage readImage(Resource resource) { - int index = RandomUtils.nextInt(0, resources.length); - try (InputStream is = resources[index].getInputStream()) + try (InputStream is = resource.getInputStream()) { return ImageIO.read(is); } @@ -88,4 +89,15 @@ public class ImageUtils return null; } } + + /** + * 返回随机图片 + * + * @return + */ + public static BufferedImage getRandomImage() + { + int index = RandomUtils.nextInt(0, images.size()); + return images.get(index); + } } \ No newline at end of file