比如一张图片里面包括几个数字,我们想用代码把数字一张张分割出来如何实现呢,用如下这个代码即可~~~
图片 = images.read("/storage/emulated/0/Tencent/QQ_Images/6afec53545aa6fd9.jpg");
识别()
图片.recycle()
function 识别() {
let w = 图片.getWidth()
let h = 图片.getHeight()
let color = images.pixel(图片, 0, 0);
let xsh = images.interval(图片, color, 60)
//images.save(xsh,"/sdcard/精灵.jpg");
let bitmap = xsh.getBitmap();
let ysz = util.java.array("int", w * h);
bitmap.getPixels(ysz, 0, w, 0, 0, w, h);
let bjs = ysz[0] //背景色
let jl = [] //记录
let jz = [] //记字
for (let x = 0; x < w; x++) {
i = 0
for (let y = 0; y < h; y++) {
let ys = ysz[y * w + x]
if (ys != bjs) {
log(ys)
jz.push({
x: x,
y: y
})
i++
}
}
if (i == 0 && jz.length > 0) {
jl.push(jz)
jz = []
}
}
let jzb = [] //记坐标
for (let i = 0; i < jl.length; i++) {
let sz = jl[i]
let x = sz[0].x,
y = sz[0].y,
w = sz[0].x,
h = sz[0].y
for (var z = 1; z < sz.length; z++) {
if (sz[z].x < x) {
x = sz[z].x
}
if (sz[z].x > w) {
w = sz[z].x
}
if (sz[z].y < y) {
y = sz[z].y
}
if (sz[z].y > h) {
h = sz[z].y
}
}
jzb.push({
x: x,
y: y,
w: w,
h: h
})
}
for (let i = 0; i < jzb.length; i++) {
let img = images.clip(图片, jzb[i].x, jzb[i].y, jzb[i].w-jzb[i].x, jzb[i].h-jzb[i].y)
images.save(img, "/sdcard/精灵" + i + ".jpg");
img.recycle()
}
xsh.recycle()
}
|