what-the-bank/sources/com/google/android/gms/vision/text/TextRecognizer.java

119 lines
4.5 KiB
Java
Raw Permalink Normal View History

2024-07-27 18:17:47 +07:00
package com.google.android.gms.vision.text;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Rect;
import android.graphics.YuvImage;
import android.util.SparseArray;
import com.google.android.gms.internal.vision.zzae;
import com.google.android.gms.internal.vision.zzag;
import com.google.android.gms.internal.vision.zzak;
import com.google.android.gms.internal.vision.zzal;
import com.google.android.gms.internal.vision.zzn;
import com.google.android.gms.internal.vision.zzp;
import com.google.android.gms.vision.Detector;
import com.google.android.gms.vision.Frame;
import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
/* loaded from: classes2.dex */
public final class TextRecognizer extends Detector<TextBlock> {
private final zzak zzez;
private TextRecognizer() {
throw new IllegalStateException("Default constructor called");
}
private TextRecognizer(zzak zzakVar) {
this.zzez = zzakVar;
}
/* loaded from: classes2.dex */
public static class Builder {
private Context zze;
private zzal zzfa = new zzal();
public Builder(Context context) {
this.zze = context;
}
public TextRecognizer build() {
return new TextRecognizer(new zzak(this.zze, this.zzfa));
}
}
@Override // com.google.android.gms.vision.Detector
public final SparseArray<TextBlock> detect(Frame frame) {
byte[] bArr;
Bitmap decodeByteArray;
zzag zzagVar = new zzag(new Rect());
if (frame == null) {
throw new IllegalArgumentException("No frame supplied.");
}
zzn zzc = zzn.zzc(frame);
if (frame.getBitmap() != null) {
decodeByteArray = frame.getBitmap();
} else {
Frame.Metadata metadata = frame.getMetadata();
ByteBuffer grayscaleImageData = frame.getGrayscaleImageData();
int format = metadata.getFormat();
int i = zzc.width;
int i2 = zzc.height;
if (grayscaleImageData.hasArray() && grayscaleImageData.arrayOffset() == 0) {
bArr = grayscaleImageData.array();
} else {
byte[] bArr2 = new byte[grayscaleImageData.capacity()];
grayscaleImageData.get(bArr2);
bArr = bArr2;
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
new YuvImage(bArr, format, i, i2, null).compressToJpeg(new Rect(0, 0, i, i2), 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
decodeByteArray = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
}
Bitmap zzb = zzp.zzb(decodeByteArray, zzc);
if (!zzagVar.zzfl.isEmpty()) {
Rect rect = zzagVar.zzfl;
int width = frame.getMetadata().getWidth();
int height = frame.getMetadata().getHeight();
int i3 = zzc.rotation;
if (i3 == 1) {
rect = new Rect(height - rect.bottom, rect.left, height - rect.top, rect.right);
} else if (i3 == 2) {
rect = new Rect(width - rect.right, height - rect.bottom, width - rect.left, height - rect.top);
} else if (i3 == 3) {
rect = new Rect(rect.top, width - rect.right, rect.bottom, width - rect.left);
}
zzagVar.zzfl.set(rect);
}
zzc.rotation = 0;
zzae[] zza = this.zzez.zza(zzb, zzc, zzagVar);
SparseArray sparseArray = new SparseArray();
for (zzae zzaeVar : zza) {
SparseArray sparseArray2 = (SparseArray) sparseArray.get(zzaeVar.zzfj);
if (sparseArray2 == null) {
sparseArray2 = new SparseArray();
sparseArray.append(zzaeVar.zzfj, sparseArray2);
}
sparseArray2.append(zzaeVar.zzfk, zzaeVar);
}
SparseArray<TextBlock> sparseArray3 = new SparseArray<>(sparseArray.size());
for (int i4 = 0; i4 < sparseArray.size(); i4++) {
sparseArray3.append(sparseArray.keyAt(i4), new TextBlock((SparseArray) sparseArray.valueAt(i4)));
}
return sparseArray3;
}
@Override // com.google.android.gms.vision.Detector
public final boolean isOperational() {
return this.zzez.isOperational();
}
@Override // com.google.android.gms.vision.Detector
public final void release() {
super.release();
this.zzez.zzp();
}
}