Hey Rob, I've tried copying the Canvas over to a new Canvas, then resizing, but I'm having difficulty getting a deep copy of a Canvas object with all it's children properly intact. And to the extent that I've exceeded, it seems that resizing the width/height or scaleX/Y of the new canvas does not effect the size of it's children (which it should).
As to the file upload via REST, I'll try to throw some example code up for you later. It's not terribly difficult, you basically attach the bytearray as the data property of POST request to the rest API, then have the server (we're using php) turn the bytearray data into an image.

