Думаю, мне понадобится буферизованное изображение и использование ImageOutputStream. Извините, я не знаю, отсюда и отсутсвие информации. Я надеюсь на магический метод решения всех проблем.
Canvas to BufferedImage:
Canvas c = ... BufferedImage im = ... Graphics g = im.getGraphics(); c.paint(g);
BufferedImage to Canvas: в вызове метода paint (Graphics g):
g.drawImage(im, 0, 0, null);
См. ImageIO.write(RenderedImage,String,ImageOutputStream).
ImageIO.write(RenderedImage,String,ImageOutputStream)