Я думаю, что лучше всего будет использовать библиотеку для работы с изображениями.
Вот список наиболее часто используемых. Реализовать все это самостоятельно было бы очень утомительно. библиотеки манипулирования изображениями
в качестве альтернативы, можно также вставить изображение на холст, масштабировать его (так, как вы хотите), а затем извлечь его.
Но имхо я думаю, лучший способ - это хорошо поддерживаемая библиотека