案例代碼
import lombok.extern.slf4j.Slf4j;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.*;
@Slf4j
public class ImgUtils {
public static void main(String[] args) throws IOException {
File file = new File("F:\\測試圖片\\3.jpg");
String fileName = file.getName();
FileInputStream fileInputStream = new FileInputStream(file);
byte[] imageCom = getImageCom(fileInputStream);
FileOutputStream fileOutputStream = new FileOutputStream("F:\\測試圖片\\new\\" + fileName);
fileOutputStream.write(imageCom);
fileOutputStream.flush();
fileOutputStream.close();
}
public static byte[] getImageCom(InputStream inputStream) throws IOException {
try {
// 把圖片讀入到內存中
BufferedImage bufImg = ImageIO.read(inputStream);
// 壓縮代碼,存儲圖片文件byte數組
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//防止圖片變紅,這一步非常重要
BufferedImage bufferedImage = new BufferedImage(bufImg.getWidth(), bufImg.getHeight(), BufferedImage.TYPE_INT_RGB);
bufferedImage.createGraphics().drawImage(bufImg,0,0, Color.WHITE,null);
//先轉成jpg格式來壓縮,然后在通過OSS來修改成源文件本來的后綴格式
ImageIO.write(bufferedImage,"jpg", bos);
return bos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
} finally {
inputStream.close();
}
return null;
}
}