在圖片上, 隨機取25個點 把顏色轉爲hsl, 若是25個點中, 有70%的顏色都是藍色, 那麼圖片的主題色就是藍色java
// 藍色240度
// 實測畫面藍色範圍 210-240
// 70%的點都是藍色, 說明沒有彈框
importClass(Packages.androidx.core.graphics.ColorUtils);
function 主色是否是藍色(img) {
let dw = device.width;
let dh = device.height;
let left = dw * 0.3;
let right = dw * 0.7;
let top = dh * 0.3;
let bottom = dh * 0.5;
let pointList = [];
let k = 5;
let unitX = (right - left) / k;
let unitY = (bottom - top) / k;
for (var i = 0; i < k; i++) {
let y = top + i * unitY;
for (var j = 0; j < k; j++) {
let x = left + j * unitX;
pointList.push({
x: x,
y: y,
});
}
}
let blueCount = 0;
let total = k * k;
pointList.map(function (point) {
let color = img.pixel(point.x, point.y);
let hsl = util.java.array("float", 3);
ColorUtils.RGBToHSL(colors.red(color), colors.green(color), colors.blue(color), hsl);
if (hsl[0] > 210 && hsl[0] < 240) {
blueCount++;
}
});
let limit = 0.7;
if (blueCount / total > limit) {
return true;
} else {
return false;
}
}
module.exports = 主色是否是藍色;
複製代碼
部份內容來自網絡 本教程僅用於學習, 禁止用於其餘用途android