OK. Now, let's do some more manipulating tasks. Here's another simple one.
For resizing, let's keep it simple. We will show the current size in pixels, and let the client change the height or width. We will keep the aspect ratio of the original, so the image does not get skewed.
Even with that, there is still some subtle trickiness to this. The problem has to do with the order of effects. We always build up our sample image by starting with the original untouched image, but if you resize an image to 640x480 and then rotate it 90 degrees, the effect is very different from rotating 90 degrees first and then resizing to 640x480.
On the server side, we always want to carry out the effects in the same order, but on the client side, we need to be able to do them in whatever order makes sense to the user. There is no easy solution to this, so we just need to be aware of it at all times when writing.