Bild Größenänderung Algorithmus
Ich möchte eine Funktion schreiben, die zu verkleinern, ein Bild zu passen, angegebenen Grenzen. Zum Beispiel möchte ich die Größe einer 2000x2333 Bild zu passen in 1280 x 800. Das Seitenverhältnis muss beibehalten werden. Ich habe mit dem folgenden Algorithmus:
NSSize mysize = [self pixelSize]; //just to get the size of the original image
int neww, newh = 0;
float thumbratio = width /height; //width and height are maximum thumbnail's bounds
float imgratio = mysize.width /mysize.height;
if (imgratio > thumbratio)
{
float scale = mysize.width /width;
newh = round(mysize.height /scale);
neww = width;
}
else
{
float scale = mysize.height /height;
neww = round(mysize.width /scale);
newh = height;
}
Und es schien zu funktionieren. Naja ... schien. Aber dann versuchte ich die Größe ein 1280x1024 Bild auf einem 1280x800 Grenzen und es gab mir ein Ergebnis von 1280x1024 (die offensichtlich nicht passen in 1280 x 800).
Hat jemand irgendwelche Ideen, wie dieser Algorithmus funktionieren sollte?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Weg, den ich in der Regel tun dies zu betrachten, der das Verhältnis zwischen der ursprünglichen Höhe und die neue Breite und das Verhältnis zwischen der ursprünglichen Höhe und die neue Breite.
Nachdem diese verkleinern Sie das Bild mit dem größten Verhältnis. Zum Beispiel, wenn Sie wollten, um die Größe ein 800x600 Bild in ein 400x400 Bild die Breite-Verhältnis wäre 2, und die Höhe-Verhältnis von 1,5. Verkleinern Sie das Bild mit einer Quote von 2 gibt ein 400x300 Bild.
Hier ist ein Weg, dieses problem anzugehen:
Wissen Sie, dass entweder das Bild in Höhe oder Breite ist gleich, dass der bounding-box.
Sobald Sie festgestellt haben, welche dimension entspricht der bounding-box, verwenden Sie das Seitenverhältnis des Bilds zu berechnen, die andere dimension.
sourceRatio
. Guter pickup.