update:修复由于高版本JDK删除sun.misc.*导致的程序报错的BUG

This commit is contained in:
divenswu 2022-03-18 13:09:16 +08:00
parent 1352ef80a0
commit c7c6cc9b7d
2 changed files with 12 additions and 6 deletions

View File

@ -9,7 +9,6 @@ import org.opencv.dnn.Dnn;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import sun.misc.BASE64Decoder;
import javax.imageio.ImageIO;
import java.awt.*;
@ -20,6 +19,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Base64;
/**
* 图片加载工具
@ -66,8 +66,11 @@ public class ImageMat implements Serializable {
public static ImageMat fromBase64(String base64Str){
InputStream inputStream = null;
try {
BASE64Decoder decoder = new BASE64Decoder();
byte[] data = decoder.decodeBuffer(base64Str);
// 新版本JDK被移除替换为Base64.Decoder
// BASE64Decoder decoder = new BASE64Decoder();
// byte[] data = decoder.decodeBuffer(base64Str);
Base64.Decoder decoder = Base64.getMimeDecoder();
byte[] data = decoder.decode(base64Str);
inputStream = new ByteArrayInputStream(data);
return fromInputStream(inputStream);
}catch (Exception e){

View File

@ -1,10 +1,10 @@
package com.visual.face.search.core.utils;
import org.opencv.core.Mat;
import sun.misc.BASE64Encoder;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.util.Base64;
import java.util.Objects;
public class MatUtil {
@ -42,8 +42,11 @@ public class MatUtil {
byteArrayOutputStream = new ByteArrayOutputStream();
ImageIO.write(matToBufferedImage(mat), "jpg", byteArrayOutputStream);
byte[] bytes = byteArrayOutputStream.toByteArray();
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encodeBuffer(Objects.requireNonNull(bytes));
// 新版本JDK被移除替换为Base64.Encoder
// BASE64Encoder encoder = new BASE64Encoder();
// return encoder.encodeBuffer(Objects.requireNonNull(bytes));
Base64.Encoder encoder = Base64.getMimeEncoder();
return encoder.encodeToString(Objects.requireNonNull(bytes));
}catch (Exception e){
throw new RuntimeException(e);
}finally {