2016-11-18 13 views
0

Ich habe 2 Bilder, Bild 1 und Image 2.Algorithmus für die Skalierung Bild basierend auf einer anderen Bildgröße und auch das Seitenverhältnis beibehalten

Bild 1 hat eine Größe von 512 (Breite) x 515 (Höhe).

Dann Bild 2 mit der Größe von 256 (Breite) x 256 (Höhe).

Bild 2 wird, wird als Wasserzeichen verwendet werden und wird auf der Oberseite des Bild 1 platziert werden.

Ich möchte Bild 2 Größe auf Bild 1 Größe abhängig. Image 2 kann Größe abhängig von der Größe von Image 1.

Die neue Größe (Breite & Höhe) von Bild 2 sollte 20 Prozent Größe Bild 1 und die-gleiche Zeit bewahren sein Seitenverhältnis sein.

Was ist der Algorithmus die neue Größe (Breite & Höhe) von Bild 2 zu finden?

Momentan verwende ich (20%/100) * 512, um die Größe zu ändern, aber dies bewahrt nicht Image 2 Seitenverhältnis.

+0

20% nach Fläche oder mit einer der Achsen, wobei die andere Achse neu skaliert wird, um das Seitenverhältnis beizubehalten? – samgak

+0

@samgak 20% um kleiner als Bild 1 in Breite und Höhe. Ich kann diesen Teil machen. Das Problem ist jetzt das Aspektverhältnis, das ich nach der Skalierung auch gleich lang sein möchte. – Programmer

Antwort

2

Wenn die beiden Bilder nicht das gleiche Seitenverhältnis haben, ist es mathematisch unmöglich, Breite und Höhe um 20% zu skalieren und das Seitenverhältnis beizubehalten.

Wählen Sie also eine Achse, mit der Sie skalieren möchten, und skalieren Sie die andere Achse auf die Größe, bei der das Seitenverhältnis beibehalten wird.

zB mit Breite:

new_image1_width = 512 * (20/100) = 102.4 

dann die neue Höhe berechnen das Seitenverhältnis zu erhalten:

original_aspect_ratio = image2_width/image2_height = 256/256 = 1 
new_image1_height = 102.4/original_aspect_ratio = 102.4 

oder tun es in die andere Richtung (diesmal mit dem Verhältnis multipliziert wird):

new_image1_height = 515 * (20/100) = 103 
original_aspect_ratio = image2_width/image2_height = 256/256 = 1 
new_image1_width = 103 * original_aspect_ratio = 103 

Wenn Sie mit beliebigen Bildgrößen und beliebigen Skalierungsfaktoren umgehen müssen, benötigen Sie zwei Wechseln Sie zwischen den beiden Möglichkeiten, je nachdem, wie die Regel aussehen soll. Z.B. Sie könnten immer mit dem kleineren der beiden gehen, oder verwenden Sie eine Verhältnis-angepasste Höhe, es sei denn, Sie erhalten eine Höhe größer als Bild 1 Höhe, und in diesem Fall verwenden Sie den zweiten Weg, oder umgekehrt.

+0

Entschuldigung, ich habe nicht bemerkt, dass die Bildgröße 512 * 515 und nicht 512 * 512 war.Habe die Antwort bearbeitet – samgak

+0

Ich versuche dies und werde Sie in Minuten wissen – Programmer

+0

Nur um Sie wissen zu lassen, dass das zweite Bild ein Wasserzeichenbild ist, das vor dem ersten Bild platziert wird. Es muss nur um einige Prozent kleiner sein und wird oben rechts neben dem ersten Bild platziert. Tatsache ist, dass niemand die Größe beider Bilder kennt. Die Zahl, die Sie in dieser Frage sehen, dient nur als Beispiel. Das Auto-Rescale-Zeug und auch die Aufrechterhaltung der Proportionen ist, was ich habe mit kämpfen. Ich möchte nur sicherstellen, dass das Bild in der Größe nicht so stark vom Originalbild abweicht. – Programmer

Verwandte Themen