Nie wiem o co dokładnie chodzi, ale podejrzewam próbę wynajdywania koła na nowo.
Podam dla uproszczenia przykład skalowania wiersza (czyli jednowymiarowego odcinka). Potem już sobie można to uogólnić do skalowania dwywymiarowej bitmapy.
Bierzez sobie wiersz lub kolumnę i robisz z tego funkcję y(x)=V gdzie x to numer kolejnego piksela a V to wartość koloru pojedynczego kanału lub para (rg,b) czy (r,g,b,a) jeśli liczysz z przezroczystością (a od alpha), Masz więc osie X i Y, gdzie współrzędne X to kolejne numery elementów w wierszu, zaś Y to te wartości jakie przyjmumuje kolor. Odległości między kolejnymi elementami wiersza przyjmujesz sobie za wartość 1. To znaczy x1-x2=1.
Teraz aby przeskalować sobie taki wiersz musisz po prostu podzielić sobie obszar pomiędzy x0 oraz xN na odpowiednią ilość przedziałów. Właśnie po to przyjmuje się odległość między kolejnymi x skalowanego obrazu by można było trafić między punktami. Np. jeśli trafisz 0,36 jednostek na prawo od punktu x3 to przykładowo liczysz sobie najprymitywniejszą metodą y_poprzeskalowaniu_w_punkcie_którymśtam=y(x3)0,36+y(x4)(1-0,36). Przy pomniejszaniu obrazu punktów tych będzie mniej niż masz w wierszu znanych pikseli(tych z oryginalnego obrazu) przy powiększaniu więcej.
Zamienia się więc problem wartości piksela w problem znajdywania wartości funkcji w danym punkcie w momencie gdy wartości funkcji znane są tylko dla co któregoś punktu, a pomiędzy nimi już musisz w jakiś zorganizowany sposób zgadywać.
Żeby to przerobić na skalowanie wierszy i kolum jednocześnie musisz sobie to przerobić na znajdywanie punktu na dwywymiarowej płaszczyźnie.