const PNG = require("pngjs").PNG;
const fs=require('fs')
require('./sortAdd')
const getGrayData=require('./getGrayData')
const {getLbpData,getUniformLbpData}=require('./getLbpData')
const getLineArrByGrayData=require('./getLineArrByGrayData')
const getTextArr=require('./getTextArr')
const getV=require('./getV')
const buff=fs.readFileSync('../data/Arial32.png');
const imageData=PNG.sync.read(buff)
const grayData=getGrayData(imageData)
const lbpData=getUniformLbpData(grayData)
const posArr=getLineArrByGrayData(grayData)
const textArr=getTextArr();
const onceMap={};
const list_key=[];
const list_val=[];
let noUseNum=0;
posArr.forEach(function (pos,i) {
// if(i>9){return}
if(/[a-z]/i.test(textArr[i])){
noUseNum++
return;
}
const [x1,y1,x2,y2]=pos;
const w=x2-x1
const h=y2-y1
for(let y=y1;y<y2;y++){
const arr=[]
for(let x=x1;x<x2;x++){
const v=getV(x,y,lbpData)
arr.push(v)
}
const key=arr.join('').replace(/^0*(.*?)0*$/,'$1');
if(key){
const [n,len,dis]=list_key.sortFindLen(key)
const obj=[i]
if(dis===1){
list_key.splice(n+1,0,key)
list_val.splice(n+1,0,obj)
}else if(dis===-1){
list_key.splice(n,0,key)
list_val.splice(n,0,obj)
}else{
list_val[n].pushOnly(i)
}
}
}
})
const twoArr=[]
for(let i=list_val.length-1;i>=0;i--){
const arr=list_val[i]
if(arr.length>1){
list_key.splice(i,1)
list_val.splice(i,1)
twoArr.push(arr)
}
}
//单行唯一特征
console.log(list_val)
function getLine(x1,x2,y,lbpData) {
const arr = [];
for (let x = x1; x < x2; x++) {
const v = getV(x, y, lbpData)
arr.push(v)
}
return arr.join('');
}
function solve(lbpData) {
const text_Arr=[]
for(let y=0;y<lbpData.height;y++) {
const line=getLine(0,lbpData.width,y,lbpData)
let x=0;
while (x<lbpData.width){
const [n,len,dis]=list_key.sortFindLen(line,x);
//命中了
if(dis===0||dis===1&&len===list_key[n].length){
const index=list_val[n][0];
text_Arr.pushOnly(index)
x=x+len
}else{
x++;
}
}
}
for(let i=0;i<textArr.length;i++){
const tv=textArr[i]
if(/[a-z]/i.test(tv)){
}else{
if(text_Arr.indexOf(i)===-1){
console.log(i,tv)
}
}
}
console.log(text_Arr.length)
console.log(textArr.length-noUseNum)
}
solve(lbpData)
// console.log(list_key)
// console.log(list_val)