大杰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条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?