Client side image placeholder generation (through canvas, with online-service fallback)