/** * Writes this map to a JPG file. * * @param filename the path and name of the file to create. */ public void writeToJPGFile(String filename) throws IOException { this.prepareToDraw(); BufferedImage buffImage = new BufferedImage(p.getWidth(), p.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D graphics2D = buffImage.createGraphics(); try { p.draw(graphics2D); System.out.println("Writing picture to " + filename); ImageIO.write(buffImage, "JPG", new File(filename)); } finally { graphics2D.dispose(); } }
// Takes a PImage and compresses it into a JPEG byte stream // Adapted from Dan Shiffman's UDP Sender code public byte[] compressImage(PImage img) { // We need a buffered image to do the JPG encoding BufferedImage bimg = new BufferedImage(img.width, img.height, BufferedImage.TYPE_INT_RGB); img.loadPixels(); bimg.setRGB(0, 0, img.width, img.height, img.pixels, 0, img.width); // Need these output streams to get image as bytes for UDP communication ByteArrayOutputStream baStream = new ByteArrayOutputStream(); BufferedOutputStream bos = new BufferedOutputStream(baStream); // Turn the BufferedImage into a JPG and put it in the BufferedOutputStream // Requires try/catch try { ImageIO.write(bimg, "jpg", bos); } catch (IOException e) { e.printStackTrace(); } // Get the byte array, which we will send out via UDP! return baStream.toByteArray(); }