hutool识别图片里的二维码失败,使用灰度处理

    public AjaxResult uploadByTrack(@RequestParam("file") MultipartFile file) throws IOException {
        AjaxResult ajaxResult = AjaxResult.success();
        // 将MultipartFile转换为BufferedImage
        BufferedImage bufferedImage = ImageIO.read(file.getInputStream());
        // 对BufferedImage进行灰度处理
        BufferedImage grayImage = convertToGrayscale(bufferedImage);
        //获取上传路径
        String filePath = RuoYiConfig.getUploadPath();
        // 将灰度图像保存为文件
        File outputFile = new File(filePath+ com.hailir.common.utils.uuid.UUID.fastUUID()+"PNG");
        /*写入内存*/
        ImageIO.write(grayImage, "png", outputFile);
        /*解析灰度图片*/
        String decode = QrCodeUtil.decode(outputFile);
        logger.info("解析出的数据-----{}", decode);
        if(outputFile.exists()){
            outputFile.delete();//删除临时灰度图片
        }
        ajaxResult.put("data", decode);
        return ajaxResult;
    }
//灰度处理
    private static BufferedImage convertToGrayscale(BufferedImage originalImage) {
        int width = originalImage.getWidth();
        int height = originalImage.getHeight();

        BufferedImage grayImage = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);

        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                int rgb = originalImage.getRGB(x, y);
                Color color = new Color(rgb);
                int gray = (int) (color.getRed() * 0.299 + color.getGreen() * 0.587 + color.getBlue() * 0.114);
                Color grayColor = new Color(gray, gray, gray);
                grayImage.setRGB(x, y, grayColor.getRGB());
            }
        }

        return grayImage;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值