Итак, хорошо, я нашел решение.
Я использовал метод суперсэмплинга bobince , предложенный ранее, но обнаружил, что изображения становятся размытыми. Поэтому я бы не стал предоставлять полный код, но я объясню свое решение.
Это может показаться идиотским, но я не нашел другого способа сделать это без привлечения каких-либо других библиотек.
С помощью PIL вы рисуете на изображении белые (или любого другого цвета, включая прозрачные) углы. Затем вы копируете это. Теперь у вас должно быть два изображения с белыми круглыми углами без сглаживания.
Теперь вы должны использовать метод масштабирования -> суперсэмплинг (см. ответ Бобинса выше), чтобы сделать одно из изображений плавным (я использовал 8-кратное масштабирование).
Теперь у вас есть два изображения - одно с хрустящими углами, а другое с гладкими углами, но с размытым изображением.
Теперь вам нужно сделать углы на четком изображении прозрачными и вставить все изображение на гладкое. Для этого я использовал метод Image.composite (crispy_image, smooth_image, crispy_image) в библиотеке PIL.
Voila!