package com.tejia.lijin.app.util.zxing.decode; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.text.TextUtils; import android.util.Log; import com.google.zxing.BarcodeFormat; import com.google.zxing.BinaryBitmap; import com.google.zxing.DecodeHintType; import com.google.zxing.MultiFormatReader; import com.google.zxing.Result; import com.google.zxing.common.HybridBinarizer; import java.util.Hashtable; import java.util.Vector; /** * Created by yzq on 2017/10/17. *
* 解析二维码图片
* 解析是耗时操作,要放在子线程
*/
public class DecodeImgThread extends Thread {
/*图片路径*/
private String imgPath;
/*回调*/
private DecodeImgCallback callback;
private Bitmap scanBitmap;
public DecodeImgThread(String imgPath, DecodeImgCallback callback) {
this.imgPath = imgPath;
this.callback = callback;
}
@Override
public void run() {
super.run();
if (TextUtils.isEmpty(imgPath) || callback == null) {
return;
}
/**
* 对图片进行裁剪,防止oom
*/
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true; // 先获取原大小
scanBitmap = BitmapFactory.decodeFile(imgPath, options);
options.inJustDecodeBounds = false; // 获取新的大小
int sampleSize = (int) (options.outHeight / (float) 400);
if (sampleSize <= 0)
sampleSize = 1;
options.inSampleSize = sampleSize;
scanBitmap = BitmapFactory.decodeFile(imgPath, options);
MultiFormatReader multiFormatReader = new MultiFormatReader();
// 解码的参数
Hashtable