package drawmaptiles; import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import javax.imageio.ImageIO; import javax.imageio.stream.ImageOutputStream; /** * * https://bugs.openjdk.java.net/browse/JDK-6967419 */ public class DrawMapTiles { public static void main(String[] args) throws IOException { OutputStream os = new NullOutputStream(); ImageOutputStream ios = ImageIO.createImageOutputStream(os); System.out.println("ios: " + ios); System.out.println("write big image..."); System.out.flush(); try { ImageIO.write(createImage(2048),"PNG", ios); } catch (IOException e) { ios.close(); } } private static BufferedImage createImage(int s) { BufferedImage i = new BufferedImage(s, s, BufferedImage.TYPE_3BYTE_BGR); Graphics2D g = i.createGraphics(); g.setPaint(new GradientPaint(0, 0, Color.blue, s, s, Color.red)); g.fillRect(0, 0, s, s); g.dispose(); return i; } static class NullOutputStream extends OutputStream { long count = 0; @Override public void write(int b) throws IOException { count++; if (count > 30000L) { System.out.println("throw an exception on " + count); throw new IOException("Unable to write!"); } } } }