Проблема заключается в том, что PIL является растровым процессором изображения, в отличие от векторного процессора изображений.Он "растеризует" векторных изображений (таких как файл EPS и SVG-файлы) в сетку при их открытии, поскольку может работать только с растрами.
Если эта сетка не имеетдостаточно разрешения, вы никогда не сможете восстановить его.Обычно он растеризуется со скоростью 100 точек на дюйм, поэтому, если вы хотите сделать большие изображения, вам нужно растеризовать их на большую сетку, прежде чем вы начнете.
Сравните:
from PIL import Image
eps_image = Image.open('image.eps')
eps_image.save('a.jpg')
Результат540x720:

И это:
from PIL import Image
eps_image = Image.open('image.eps')
# Rasterise onto 4x higher resolution grid
eps_image.load(scale=4)
eps_image.save('a.jpg')
Результат 2160x2880:

Теперь у вас достаточно качества для изменения размера, как вам нравится.
Обратите внимание, что вам вообще не нужно писать Python для этого - ImageMagick сделает все за вас.Он включен в большинство дистрибутивов Linux и доступен для macOS и Windows, и вы просто используете его в терминале.Эквивалентная команда выглядит следующим образом:
magick -density 400 input.eps -resize 800x600 -quality 95 output.jpg