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;
}
hutool识别图片里的二维码失败,使用灰度处理
最新推荐文章于 2023-12-13 13:47:13 发布