在做服务接口时,传递过来的图片数据可能是base64编码的,如何判断图片的合法性? 直接看代码吧:
@Test
public void base64StringToImage() throws Exception {
/*String imageFilePath = rootPath + "sign.jpg";
byte[] sourceImageData_ori = IoUtil.read(new FileInputStream(imageFilePath));
String imageBase64String = Base64Utils.encode(sourceImageData_ori);*/
//图片base64数据
String imageBase64String = "...........ICIiAiIgIiICIiAiIgIiIP/2Q==...........";
byte[] sourceImageData = Base64Utils.decode(imageBase64String);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(sourceImageData);
MemoryCacheImageInputStream memoryCacheImageInputStream = new MemoryCacheImageInputStream(byteArrayInputStream);
Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(memoryCacheImageInputStream);
while (imageReaders.hasNext()) {
ImageReader imageReader = imageReaders.next();
if (imageReader instanceof JPEGImageReader) {
logger.info("jpeg...");
} else if (imageReader instanceof PNGImageReader) {
logger.info("png...");
} else if (imageReader instanceof BMPImageReader) {
logger.info("bmp...");
} else if (imageReader instanceof GIFImageReader) {
logger.info("gif...");
} else if (imageReader instanceof WBMPImageReader) {
logger.info("wbmp...");
} else {
logger.info("unknown...");
}
imageReader.dispose();
}
byteArrayInputStream.close();
memoryCacheImageInputStream.close();
}