From 778a67222fc26b8603a63f09a9478b4a260dd2e2 Mon Sep 17 00:00:00 2001 From: chenzecheng <陈泽成@chenzecheng> Date: Fri, 9 Aug 2024 10:11:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E8=89=B2=E5=B7=AE=E5=80=BC?= =?UTF-8?q?=EF=BC=8C=E5=8F=82=E6=95=B0=E4=B8=BAnull=E6=97=B6=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E6=9C=80=E5=A4=A7=E8=89=B2=E5=B7=AE=E5=80=BC=EF=BC=9B?= =?UTF-8?q?=E4=BF=AE=E5=A4=8DcompareColor=E4=B8=BAnull=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hutool/swing/img/color/ColorUtil.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hutool-swing/src/main/java/org/dromara/hutool/swing/img/color/ColorUtil.java b/hutool-swing/src/main/java/org/dromara/hutool/swing/img/color/ColorUtil.java index 6671748e6..0d262334f 100644 --- a/hutool-swing/src/main/java/org/dromara/hutool/swing/img/color/ColorUtil.java +++ b/hutool-swing/src/main/java/org/dromara/hutool/swing/img/color/ColorUtil.java @@ -269,12 +269,11 @@ public class ColorUtil { * @since 5.8.30 */ public static Color randomColor(final Color compareColor, final int minDistance) { - // 注意minDistance太大会增加循环次数,保证至少1/3的概率生成成功 - Assert.isTrue(minDistance < maxDistance(compareColor) / 3 * 2, - "minDistance is too large, there are too few remaining colors!"); - Color color = randomColor(); - if(null == compareColor || minDistance <= 0){ + if(null != compareColor && minDistance > 0){ + // 注意minDistance太大会增加循环次数,保证至少1/3的概率生成成功 + Assert.isTrue(minDistance < maxDistance(compareColor) / 3 * 2, + "minDistance is too large, there are too few remaining colors!"); while (computeColorDistance(compareColor, color) < minDistance) { color = randomColor(); } @@ -293,7 +292,8 @@ public class ColorUtil { */ public static int computeColorDistance(final Color color1, final Color color2) { if (null == color1 || null == color2) { - return 0; + // (0,0,0)到(256,256,256)的距离约等于442.336 + return 443; } return (int) Math.sqrt(Math.pow(color1.getRed() - color2.getRed(), 2) + Math.pow(color1.getGreen() - color2.getGreen(), 2) @@ -308,6 +308,10 @@ public class ColorUtil { * @since 6.0.0-M16 */ public static int maxDistance(final Color color) { + if (null == color) { + // (0,0,0)到(256,256,256)的距离约等于442.336 + return 443; + } final int maxX = RGB_COLOR_BOUND - 2 * color.getRed(); final int maxY = RGB_COLOR_BOUND - 2 * color.getGreen(); final int maxZ = RGB_COLOR_BOUND - 2 * color.getBlue();