• 安卓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())));
    }
    

  • 相关阅读:
    异架构PWN-TIPS-01
    服务器基础知识:raid卡有什么优势?
    卷积神经网络 CNN
    [unity3d][通过代码]让模型移动,动态改变模型位置,点对点移动
    【C++ 哈希应用】
    LibTorch实战二:MNIST的libtorch代码
    腾讯云轻量2核4G5M服务器_CPU内存_流量_带宽_系统盘
    【Linux】【开发】Linux shell环境下如何产生随机数
    外卖系统关于redis使用解决高并发情况
    JAVA毕业设计河池市旅游信息系统计算机源码+lw文档+系统+调试部署+数据库
  • 原文地址:https://blog.csdn.net/qq_36237165/article/details/138622558