• 安卓uir转二维码保存本地



    第一步:集成zxing库

    //集成二维码
    api 'com.google.zxing:core:3.3.3'

    //添加读写权限

    第二步:uir转bitmap

    /**
     * Created by KeithXiaoY on 2016/7/27.
     * 生成一个二维码图像
     *
     * @param url
     * 传入的字符串,通常是一个URL
     * @param widthAndHeight
     * 图像的宽高
     * @return
     */
    private final int BLACK = 0xff000000;
    private final int WHITE = 0xffffffff;
    
    public Bitmap createQRCode(String str, int widthAndHeight)
            throws WriterException {
        Hashtable hints = new Hashtable();
        hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
        BitMatrix matrix = new MultiFormatWriter().encode(str, BarcodeFormat.QR_CODE, widthAndHeight, widthAndHeight);
        int width = matrix.getWidth();
        int height = matrix.getHeight();
        int[] pixels = new int[width * height];
        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                if (matrix.get(x, y)) {
                    pixels[y * width + x] = BLACK;
                } else {
                    pixels[y * width + x] = WHITE;
                }
            }
        }
        Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
        return bitmap;
    }

    第三步:保存到本地

    方法1:调系统的

    MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "shareImage", "description");

    方法2:

    /**
     * API29 中的最新保存图片到相册的方法
     */
    public boolean saveBitmap(Bitmap toBitmap, Context context) {
        boolean state = false;
        //开始一个新的进程执行保存图片的操作
        Uri insertUri = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
        //使用use可以自动关闭流
        try {
            OutputStream outputStream = context.getContentResolver().openOutputStream(insertUri, "rw");
            if (toBitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream)) {
                state = true;
            } else {
                state = false;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    
        return state;
    }
    
    
    方法3:
    
    public static void saveImageToGallery(Context context, Bitmap bmp) {
        // 首先保存图片
        File appDir = new File(Environment.getExternalStorageDirectory(), "Boohee");
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String fileName = System.currentTimeMillis() + ".jpg";
        File file = new File(appDir, fileName);
        try {
            FileOutputStream fos = new FileOutputStream(file);
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        // 其次把文件插入到系统图库
        try {
            MediaStore.Images.Media.insertImage(context.getContentResolver(),
                    file.getAbsolutePath(), fileName, null);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        // 最后通知图库更新
        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsolutePath())));
    }
    

  • 相关阅读:
    Blazor和Vue对比学习(知识点杂锦3.04):Blazor中C#和JS互操作(超长文)
    java操作达梦数据库报org.springframework.dao.DataIntegrityViolationException异常
    OA项目之会议排座和送审
    项目实战:一个由多线程引起的线程安全问题(附:解决方案)
    小型洗衣机什么牌子好又便宜?内衣洗衣机推荐
    如何用CRM软件系统提升销售成绩
    vue中动态设置source标签
    高阶面试-mongodb
    java之普通代码块
    机器学习-决策树
  • 原文地址:https://blog.csdn.net/qq_36237165/article/details/138622558