func (p Params) ToString() string {
	return fmt.Sprintf("%s_%s,%s_%s,%s_%d,%s_%d,%s_%s,%s_%d", parameterCropping, p.cropping, parameterGravity, p.gravity, parameterHeight, p.height, parameterWidth, p.width, parameterFilter, p.filter, parameterScale, p.scale)
}
ToString turns parameters into a unique string for each possible assignment of parameters
package main
import (
	"fmt"
	"regexp"
	"strconv"
	"strings"
)
const (
	parameterWidth    = "w"
	parameterHeight   = "h"
	parameterCropping = "c"
	parameterGravity  = "g"
	parameterFilter   = "f"
	parameterScale    = "s"
	CroppingModeExact = "e"
	CroppingModeAll = "a"
	CroppingModePart = "p"
	CroppingModeKeepScale = "k"
	GravityNorth     = "n"
	GravityNorthEast = "ne"
	GravityEast      = "e"
	GravitySouthEast = "se"
	GravitySouth     = "s"
	GravitySouthWest = "sw"
	GravityWest      = "w"
	GravityNorthWest = "nw"
	GravityCenter    = "c"
	FilterGrayScale = "grayscale"
	DefaultScale        = 1
	DefaultCroppingMode = CroppingModeExact
	DefaultGravity      = GravityNorthWest
	DefaultFilter       = "none"
)
var (
	transformationNameRe = regexp.MustCompile("^t_([0-9A-Za-z-]+)$")
)
type Params struct {
	width, height, scale      int
	cropping, gravity, filter string
}