You can get something resembling from an ordinary photo with Photoshop's standard tools. As an example we start from this partial screenshot of a sports news image:

A textile image should be simpler than an ordinary photo. One popular way to simplify images is to use Photoshop's Cutout filter. It can simplify edges and reduce the number of colors.
Unfortunately this image has too complex colors and cutout would cause adjacent image items to get the same color which would make the border's unclear. For simpler images it might work well. For this reason I skip Cutout, but apply the other as essential simplifying. I reduce the image resolution. It increases the apparent pixel size so that the pixels can be made to look crafted:

The image is now 160px wide. The used image size resampling method is Bicubic Sharper.
The color count must be reduced radically, because every pixel is a separate piece of a textile material. One way to get it is to turn the image temporarily to Indexed color mode. There's available many palette optimization strategies. I used this:

As many as 40 separate colors are used. A talented pixel artist could create from scratch or redraw an image by using less colors and it would still look sharper. I am not one, so this is what I have. A special Pixel Art Filter could help, but it should be based on some advanced programming to get even close to pixel artist's results. I do not know from where one could get such filter, but you can try this website: https://pixel-me.tokyo/en/
If the image happens originally be a drawing or painting with limited enough color range a good result is possible in Photoshop with low color count. This older case shows some evidence for it: How to make pixel art 2D 64x64 from 3D models/photo?
The pixels are now well visible, but they should look like they were crafted one by one - they need a structure. One way to get it is to scale the image to bigger pixel dimensions and insert a shading. I scaled the Image to 1000% with nearest neighbour resampling. The image was returned to RGB mode after indexing. In the next screenshot every 10 x 10 pixels block has the same color:

I prepared in another 10 x 10 px Photoshop image the next pattern to be used as the shading for the dots:

The pattern was originally this Illustrator drawing which tries to be a shaded bubble on a square:

In Photoshop its contrast was stretched to cover the full range from black to white and the image size was reduced to 10 x 10 pixels. The image was selected and definded to be a pattern for the Pattern Stamp tool. (Edit > Define Pattern)
The pattern presents the variations of the light. It should not be used as a transparent overlay. It does its job as the layer mask of an adjustment layer which increases contrast. It's used in a curves layer (=Curves 2 in the next image). The layer mask is simply filled with the pattern stamp - one click with the max.brush size.

There's also Curves 1 which makes the image duller. It lifts up darks so that the pattern can be noticed also on dark areas and darkens brightest areas to prevent Curves 2 to cause clipping. Here only Curves 1 is active:

As you see it's not as full of color as the original image. That's caused by the fact that a part of the image is in shadow due the structure of the effective pixels. It cannot be compensated because the brightest parts in shaded effective pixels are as bright as they can. The appearance becomes brighter when the image is zoomed to a bigger size so that every pixel in the 10 x 10 shading pattern is actually separate on the screen:

To make it look brighter in the image one could allow clipping or reduce the depth of the shadows. In the next image Curves 1 only lifts the dark areas to have the pattern visible:

In many areas the brightest spot is clipped, so one must be careful with this. In the next image clipping happens, but not as much:
