/* * Created on Dec 28, 2018 by nick * */ package jmsltestsuite; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JFrame; import com.softsynth.jmsl.score.*; public class SaveScoreToJPEGImage implements ScoreCanvasListener { private String jpegFileName; private boolean alreadySaved = false; public void setJpegFileName(String jpegFileName) { this.jpegFileName = jpegFileName; alreadySaved = false; } public void scoreCanvasClicked(ScoreCanvas canvas, Point p, MouseEvent e) { } public void scoreCanvasDragged(ScoreCanvas canvas, Point p, MouseEvent e) { } public void scoreCanvasPressed(ScoreCanvas canvas, Point p, MouseEvent e) { } public void scoreCanvasReleased(ScoreCanvas canvas, Point p, MouseEvent e) { } public void scoreCanvasRectangleSelected(ScoreCanvas canvas, Point p1, Point p2) { } public void scoreCanvasReady(ScoreCanvas canvas) { } public void scoreCanvasKeyTyped(ScoreCanvas canvas, KeyEvent keyEvent) { } public void scoreCanvasKeyReleased(ScoreCanvas canvas, KeyEvent keyEvent) { } public void scoreCanvasDisplayedImageReady(Score score, ScoreCanvas canvas, Image displayedImage) { Graphics g = displayedImage.getGraphics(); saveJpeg(score, displayedImage); } /** * @param displayedImage */ private void saveJpeg(Score score, Image displayedImage) { if (alreadySaved) { System.out.println("Not saving more than once"); return; } try { FileOutputStream out = new FileOutputStream(jpegFileName); DrawOnScore2.encodeJpeg((BufferedImage) displayedImage, 0.8f, out); out.flush(); out.close(); alreadySaved = true; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("saved " + jpegFileName); } public static void main(String[] args) { SimpleDateFormat format = new SimpleDateFormat("MMM d, yyyy [h:mma]"); String scoreCopyright = "(c) 2018 Didkovsky / Punos Music (BMI)"; Score score = new Score(1, 800, 600); score.addMeasure(); score.addNote(4.0, 60, 0.5, 0.8); score.setName(format.format(new Date())); score.setScoreSubtitle(scoreCopyright); score.setComposer("Doctor Nerve Bot"); score.setCopyright(scoreCopyright); SaveScoreToJPEGImage listener = new SaveScoreToJPEGImage(); listener.setJpegFileName("/Users/nick/Desktop/test.jpg"); score.getScoreCanvas().addScoreCanvasListener(listener); score.render(); JFrame jf = new JFrame(); jf.add(score.getScoreCanvas().getComponent()); jf.pack(); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); System.out.println("done"); } }