大杰Jay 2019-07-10 14:15 采纳率: 0%
浏览 295

Android中怎么获取保存app拍到的图片啊

有一个ocr的设备,公司要求拍照后保存到本地,这个怎么弄哦,还给了一个示例代码:

Broadcaster:

    // bitmap 是拍照所得图像
    try {
          ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
          bitmap.compress(Bitmap.CompressFormat.JPEG, 50, jpegOutputStream);
          byte[] content = jpegOutputStream.toByteArray();


          Intent intent = new Intent("com.cainiao.scanner.image");
          intent.putExtra("jpegData", content);
          context.sendBroadcast(intent);
    } catch (Exception e) {

    }
Receiver:

    // ...
    @Override
    public void onReceive(Context context, Intent intent) {

        if(intent.getAction().equals("com.cainiao.scanner.image")){
            Bundle bundle=intent.getExtras();
            byte[] data = bundle.getByteArray("jpegData");
            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
    // ...

下边是给我的案例(MainActivity.java):

public class MainActivity extends Activity {
    private static final String RES_ACTION = "android.intent.action.SCANRESULT";
    ScannerInterface scanner;
    TextView tvScanResult;
    IntentFilter intentFilter;
    BroadcastReceiver scanReceiver;
    ImageView imageView;
    private static String g_strFilePath = Environment.getExternalStorageDirectory() + "/DCIM/img";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tvScanResult = ((TextView) findViewById(R.id.textViewDataResults));
        imageView = (ImageView) findViewById(R.id.imageView2);
        initScanner();
        setBarcodeConfig(2);

    }

    public void setBarcodeConfig(int flg) {

        Intent intent = new Intent("android.intent.action.barcodeconfig");
        intent.putExtra("barcodeconfig", flg);
        sendBroadcast(intent);

    }

    private void initScanner() {

        scanner = new ScannerInterface(this);
        scanner.setOutputMode(0);
        intentFilter = new IntentFilter();
        intentFilter.addAction("com.cainiao.scanner.image");
        intentFilter.addAction(RES_ACTION);
        scanReceiver = new ScannerResultReceiver();
        registerReceiver(scanReceiver, intentFilter);
    }

    // private Point TopLeft;
    // private Point TopRight;
    // private Point BottomLeft;
    // private Point BottomRight;

    Point[] point = new Point[4];

    /**
     * 扫描结果的广播接收者
     */
    private class ScannerResultReceiver extends BroadcastReceiver {
        public void onReceive(Context context, Intent intent) {

            if (intent.getAction().equals("com.cainiao.scanner.image")) {
                bundle bundle = intent.getExtras();
                byte[] data = bundle.getByteArray("jpegData");
                final String scanResult = bundle.getString("barcode");
                Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

                int x1 = bundle.getInt("x1");
                int y1 = bundle.getInt("y1");

                int x2 = bundle.getInt("x2");
                int y2 = bundle.getInt("y2");

                int x3 = bundle.getInt("x3");
                int y3 = bundle.getInt("y3");

                int x4 = bundle.getInt("x4");
                int y4 = bundle.getInt("y4");

                point[0] = new Point(x1, y1);
                point[1] = new Point(x3, y3);
                point[2] = new Point(x2, y2);
                point[3] = new Point(x4, y4);

                if (point[0].x != 0 || point[0].y != 0)
                    bitmap = creataBitmap(bitmap);

                imageView.setImageBitmap(bitmap);
            } else if (intent.getAction().equals(RES_ACTION)) {
                final String scanResult = intent.getStringExtra("value");// intent.getString();
                if (scanResult != null)
                    tvScanResult.setText("Data: " + scanResult);
            }
        }

    }


    private Bitmap cropBitmap(Bitmap bitmap, int start_x, int start_y, int cropWidth, int cropHeight) {

        return Bitmap.createBitmap(bitmap, start_x, start_y, cropWidth, cropHeight, null, false);
    }

    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(scanReceiver);
    }
}
    ```
  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记