没有尝试,但我认为格式实际上应该是“BMP”而不是“bmp”。请尝试
ImageIO.write(bi, "BMP", new File("D:\\MyImage.bmp"));
看看会发生什么。
我们看不到您的 bi 是如何构建的。
BufferedImage bufferedImage = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
encodingType 是否设置正确?
我认为您的 bi 已损坏,这对我来说非常有用。
BufferedImage bi = new BufferedImage(50,50,BufferedImage.TYPE_INT_RGB);
Graphics gd = bi.getGraphics();
gd.drawRect(0, 0, 10, 10);      
try {
    ImageIO.write(bi, "BMP", new File("C:\\test.bmp"));
    ImageIO.write(bi, "PNG", new File("C:\\test.png"));
} catch (IOException e) {
    System.out.println("error "+e.getMessage());
}