上传图片到阿里云oss(图片变色解决方案)
相同代码,不同的本地服务器进行图片上传,出现了截然不同的结果,参考了一些资料,大多都提出是使用ImageIO.read();读取文件导致的这个结果,博主思考了一个替换方案进行测试,代码如下
问题代码:
public String uploadImg2Oss(MultipartFile file) throws IOException {
String originalFilename = file.getOriginalFilename();
String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
Random random = new Random();
String name = random.nextInt(10000)+ System.currentTimeMillis() + substring;
try {
BufferedImage image = toBufferedImage(file);//修改图片大小
BufferedImage bufferedImage= Thumbnails.of(image).size(700, 467).asBufferedImage();//修改图片大小
/* BufferedImage bufferedImage= Thumbnails.of(file.getInputStream()).size(700, 467).outputQuality(1).asBufferedImage();*/
this.uploadFile2OSS(bufferedImageToInputStream(bufferedImage), name);//修改图片大小
return name;
} catch (Exception e) {
throw new IOException("图片上传失败");
}
}
public static BufferedImage toBufferedImage(MultipartFile file) {
BufferedImage srcImage = null;
try {
FileInputStream in = (FileInputStream) file.getInputStream();
srcImage = javax.imageio.ImageIO.read(in);
} catch (IOException e) {
}
return srcImage;
}
}
public InputStream bufferedImageToInputStream(BufferedImage image){
ByteArray