Multicolumn[Graphics3D[{SurfaceAppearance["TextureShading", Texture[disks]],
Tube[BSplineCurve[KnotData[#, "SpaceCurve"] /@ Subdivide[0, 2 Pi, 100],
SplineClosed -> True], .4]},
Boxed -> False, ImageSize -> Medium, ViewPoint -> {0, 0, 5}] & /@
{{"PretzelKnot", {5, 3, 2}}, "FigureEight",
{"TorusKnot", {3, 5}}, {"TorusKnot", {4, 9}}}, 2]
Update: In versions 12.1+, we can use the directive SurfaceAppearance["TextureShading", Texture[img]] to texturize any surface with img:


