diff --git a/CHANGELOG.md b/CHANGELOG.md index ce282fa98..5620fdddd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ * 【core 】 修复PasswdStrength检测问题(issue#I4N48X@Gitee) * 【core 】 修复UserAgentUtil解析EdgA无法识别问题(issue#I4MCBP@Gitee) * 【extra 】 修复Archiver路径前带/问题(issue#I4NS0F@Gitee) +* 【extra 】 修复getMainColor方法中参数rgbFilters无效问题(pr#2034@Github) ------------------------------------------------------------------------------------------------------------- # 5.7.17 (2021-12-09) diff --git a/hutool-core/src/main/java/cn/hutool/core/img/ImgUtil.java b/hutool-core/src/main/java/cn/hutool/core/img/ImgUtil.java index 4c590258f..7fc019675 100644 --- a/hutool-core/src/main/java/cn/hutool/core/img/ImgUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/img/ImgUtil.java @@ -2059,12 +2059,8 @@ public class ImgUtil { r = (pixel & 0xff0000) >> 16; g = (pixel & 0xff00) >> 8; b = (pixel & 0xff); - if (rgbFilters != null && rgbFilters.length > 0) { - for (int[] rgbFilter : rgbFilters) { - if (r == rgbFilter[0] && g == rgbFilter[1] && b == rgbFilter[2]) { - break; - } - } + if(matchFilters(r, g, b, rgbFilters)){ + continue; } countMap.merge(r + "-" + g + "-" + b, 1L, Long::sum); } @@ -2089,6 +2085,25 @@ public class ImgUtil { return "#" + rHex + gHex + bHex; } + /** + * 给定RGB是否匹配过滤器中任何一个RGB颜色 + * @param r R + * @param g G + * @param b B + * @param rgbFilters 颜色过滤器 + * @return 是否匹配 + */ + private static boolean matchFilters(int r, int g, int b, int[]... rgbFilters){ + if (rgbFilters != null && rgbFilters.length > 0) { + for (int[] rgbFilter : rgbFilters) { + if (r == rgbFilter[0] && g == rgbFilter[1] && b == rgbFilter[2]) { + return true; + } + } + } + return false; + } + // ------------------------------------------------------------------------------------------------------ 背景图换算 /**