001
26.05.2004, 14:41 Uhr
stephanw
localhorst
|
So ganz schnall ich nicht, was bei Dir "dynamisch" skalieren heißt. Beim Größer-Skalieren des Bildes musst Du Werte für Pixel finden, die es im Original nicht gibt, beim Kleiner-Skalieren verschwinden welche. Beides ist durch diskrete Größe "Pixel" nicht trivial. Die einfachste Lösung ist beim Größer Skalieren, mit dem Skalierungsfaktor einen gebrochenen float-Pixel im Original zu bestimmen und dann durch Auf-und-Abrunden in beiden Richtungen die 4 echten Nachbarn zu finden. Dann kannst Du R,G,B,A jeweils bilinear (= in beide Richtungen) interpolieren.
Such doch mal nach "Interpolation", wenn Dir das nichts sagt oder stöbere mal in Bildverarbeitungsskripten, vielleicht findest Du da was ?!
Edit: noch ein Tip: schreib Dir mal ne Funktion pixelToIndex (int x, int y) oder so ähnlich, die das Umrechnen der Indizees zumindest zum Entwickeln übernimmt. Das ist viel lesbarer -- Reden ist Schweigen und Silber ist Gold. Dieser Post wurde am 26.05.2004 um 14:44 Uhr von stephanw editiert. |