Not so fancy as transforming an image, but I like how the mesh in ParametricPlot
shows the deformation.
{chvar} = Simplify[
Solve[u == x y && v == y - x && y > 0 && x > 0, {x, y}, Reals],
1 <= u <= 4 && 0 <= v <= 2]
(* {{x -> (2 u)/(v + Sqrt[4 u + v^2]), y -> 1/2 (v + Sqrt[4 u + v^2])}} *)
With[{mesh = Range[-4, 6, 1/4]},
Show[
ParametricPlot[{x, y} /. chvar, {u, 0.002, 6}, {v, -4, 4}, Mesh -> {mesh, mesh}],
ParametricPlot[{x, y} /. chvar, {u, 1, 4}, {v, 0, 2}, Mesh -> {mesh, mesh},
PlotStyle -> Red]
]]

Each mesh quadrilateral is the image of a square in the uv
plane with the same dimensions 1/4
x 1/4
. The difference of the areas in the graphics represents the Jacobian factor.
(Note that the mesh was chosen explicitly to make the boundary align with the mesh.)
With ElementMesh
you can color the mesh according to the area.
Needs["NDSolve`FEM`"];
uvmesh = ToElementMesh[Rectangle[{1, 0}, {4, 2}],
MaxCellMeasure -> {"Length" -> 1/4}];
dx = Function[{u, v}, x - u /. chvar // Evaluate];
dy = Function[{u, v}, y - v /. chvar // Evaluate];
dxifn = ElementMeshInterpolation[{uvmesh}, dx @@@ uvmesh["Coordinates"]];
dyifn = ElementMeshInterpolation[{uvmesh}, dy @@@ uvmesh["Coordinates"]];
xymesh = ElementMeshDeformation[uvmesh, {dxifn, dyifn}];
With[{mesh = Range[-4, 6, 1/4]},
Show[
ParametricPlot[{x, y} /. chvar, {u, 0.002, 6}, {v, -4, 4}, Mesh -> {mesh, mesh}],
Graphics[
ElementMeshToGraphicsComplex[xymesh, All] /.
Polygon[pp_] :> Riffle[
ColorData["TemperatureMap"] /@
Rescale[First@ElementMeshElementMeasure[xymesh]],
Polygon /@ pp]],
xymesh["Wireframe"]]
]

TransformedRegion[]
? $\endgroup$