With the help of Windows Subsystem for Linux (WSL, for short)1, we can use the nearly full Linux environment on Windows system. In this post, I would like to share how to display images inside Ubuntu on Windows, which is one of the popular distrubtions.
If you try to show an image with Pillow using the following code inside WSL:
from PIL import Image
im = Image.open("test.jpg")
im.show()
you will find that nothing happens if you run the above code. The reason is two-fold:
- There is no valid image viewer on your Ubuntu on Windows (Pillow will use the system default image viewer, which is Imagemagick on Linux)
- There is no X server by which you can use GUI applications.
After knowing the reasons, the solution is simple. First, we need to install Imagemagick for Ubuntu on Windows (not on Windows 10 itself, this is important!):
sudo apt install imagemagick
Then we need to install a X server on the Windows system, which will serve your GUI applications. A good option for Windows is Vcxsrv. You can install it manually or with the help of Chocolatey:
choco install vcxsrv
After install, run it on your system. Inside Ubuntu on Windows, you should also
set the DISPALY
environment variable in your .bashrc
:
echo "export DISPLAY=localhost:0.0" >> ~/.bashrc && source ~/.bashrc
Run your Python code again and you should be able to see the image displayed properly on your screen.