試しませんでしたが、形式は実際には「bmp」ではなく「BMP」であるべきだと思います。で試してください
ImageIO.write(bi, "BMP", new File("D:\\MyImage.bmp"));
そして何が起こるか見てください。
あなたのバイがどのように構築されているかわかりません。
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());
}