jimu-decompiled/sources/com/google/zxing/common/HybridBinarizer.java
2025-05-13 19:24:51 +02:00

156 lines
4.9 KiB
Java

package com.google.zxing.common;
import com.google.zxing.LuminanceSource;
import com.google.zxing.NotFoundException;
import java.lang.reflect.Array;
/* loaded from: classes.dex */
public final class HybridBinarizer extends GlobalHistogramBinarizer {
private BitMatrix e;
public HybridBinarizer(LuminanceSource luminanceSource) {
super(luminanceSource);
}
private static int a(int i, int i2, int i3) {
return i < i2 ? i2 : i > i3 ? i3 : i;
}
@Override // com.google.zxing.common.GlobalHistogramBinarizer, com.google.zxing.Binarizer
public BitMatrix a() throws NotFoundException {
BitMatrix bitMatrix = this.e;
if (bitMatrix != null) {
return bitMatrix;
}
LuminanceSource c = c();
int c2 = c.c();
int a = c.a();
if (c2 < 40 || a < 40) {
this.e = super.a();
} else {
byte[] b = c.b();
int i = c2 >> 3;
if ((c2 & 7) != 0) {
i++;
}
int i2 = i;
int i3 = a >> 3;
if ((a & 7) != 0) {
i3++;
}
int i4 = i3;
int[][] a2 = a(b, i2, i4, c2, a);
BitMatrix bitMatrix2 = new BitMatrix(c2, a);
a(b, i2, i4, c2, a, a2, bitMatrix2);
this.e = bitMatrix2;
}
return this.e;
}
private static void a(byte[] bArr, int i, int i2, int i3, int i4, int[][] iArr, BitMatrix bitMatrix) {
int i5 = i4 - 8;
int i6 = i3 - 8;
for (int i7 = 0; i7 < i2; i7++) {
int i8 = i7 << 3;
int i9 = i8 > i5 ? i5 : i8;
int a = a(i7, 2, i2 - 3);
for (int i10 = 0; i10 < i; i10++) {
int i11 = i10 << 3;
int i12 = i11 > i6 ? i6 : i11;
int a2 = a(i10, 2, i - 3);
int i13 = 0;
for (int i14 = -2; i14 <= 2; i14++) {
int[] iArr2 = iArr[a + i14];
i13 += iArr2[a2 - 2] + iArr2[a2 - 1] + iArr2[a2] + iArr2[a2 + 1] + iArr2[a2 + 2];
}
a(bArr, i12, i9, i13 / 25, i3, bitMatrix);
}
}
}
private static void a(byte[] bArr, int i, int i2, int i3, int i4, BitMatrix bitMatrix) {
int i5 = (i2 * i4) + i;
int i6 = 0;
while (i6 < 8) {
for (int i7 = 0; i7 < 8; i7++) {
if ((bArr[i5 + i7] & 255) <= i3) {
bitMatrix.c(i + i7, i2 + i6);
}
}
i6++;
i5 += i4;
}
}
private static int[][] a(byte[] bArr, int i, int i2, int i3, int i4) {
int i5 = 8;
int i6 = i4 - 8;
int i7 = i3 - 8;
int[][] iArr = (int[][]) Array.newInstance((Class<?>) int.class, i2, i);
for (int i8 = 0; i8 < i2; i8++) {
int i9 = i8 << 3;
if (i9 > i6) {
i9 = i6;
}
for (int i10 = 0; i10 < i; i10++) {
int i11 = i10 << 3;
if (i11 > i7) {
i11 = i7;
}
int i12 = (i9 * i3) + i11;
int i13 = 0;
int i14 = 0;
int i15 = 0;
int i16 = 255;
while (i13 < i5) {
int i17 = i14;
int i18 = 0;
while (i18 < i5) {
int i19 = bArr[i12 + i18] & 255;
i17 += i19;
if (i19 < i16) {
i16 = i19;
}
if (i19 > i15) {
i15 = i19;
}
i18++;
i5 = 8;
}
if (i15 - i16 > 24) {
i13++;
i12 += i3;
i5 = 8;
while (i13 < 8) {
for (int i20 = 0; i20 < 8; i20++) {
i17 += bArr[i12 + i20] & 255;
}
i13++;
i12 += i3;
}
} else {
i5 = 8;
}
i14 = i17;
i13++;
i12 += i3;
}
int i21 = i14 >> 6;
if (i15 - i16 <= 24) {
i21 = i16 / 2;
if (i8 > 0 && i10 > 0) {
int i22 = i8 - 1;
int i23 = i10 - 1;
int i24 = ((iArr[i22][i10] + (iArr[i8][i23] * 2)) + iArr[i22][i23]) / 4;
if (i16 < i24) {
i21 = i24;
}
}
}
iArr[i8][i10] = i21;
}
}
return iArr;
}
}