How to revert shuffled array in python with default PRNG and indexes?
This has nothing to do with your random numbers.
Notice that you use the random number generator only once when you create the shuffled indices. When you load the indices from the file, the random number generator is not used, since only a file is read.
Your issue occurs at a different place: You save the scrambled Lena as a .jpg. Thereby, poor Lena's scrambled image gets compressed and the colour values change a little bit. When you load the image again and reorder the indices, you do not get the original colours back but only the values after the compression.
Solution: Save your images as a *.png and everything works out.
If you run into problems with an alpha channel, just convert the image back to RGB: scrambled_img = Image.open(img_path).convert("RGB")
Moving an image to an array then flattening it and shuffling with given x seed it should be easy to unshuffle it with the given seed and indexes from the shuffling process.

read image IMG.jpg
random.seed(x) and shuffle -> indexes, shuffle_img.jpg


unshuffle


However, this RESULT shows that the resulting IMG is simmilar but not 1:1 as the input image with this grain noise. 
Why the unshuffling gives so much noise if it is not the RNG, only PRNG?