Thumbnail in 80x80 Quadrat mittig einsetzen

Shinzo

Mitglied
Hallo Community,

wiedermal stehe ich vor einem meiner Meinung nach kleineren bis mittleren Problem.

Bei der Erzeugung meiner Thumbnails möchte ich die hochgeladenen Bilder in ein 80x80 Pixel großes Bild einbauen. Damit meine Vorschaubildchen immer 80x80 Pixel groß sind.

Entweder muss die Breite des erzeugten Thumbnails 80 Pixel groß sein oder die Höhe.
Hier hab ich mal das Beispiel, wie ich es mir vorstelle, hochgeladen:
http://www.imgbox.de/?img=j50498x110.gif

Die Verhältnisse der Seiten sind die gleichen, bloß eben um einen Faktor verkleinert.
Genau diesen Faktor suche ich..... Danach will ich das Bild mittig (vertikal/horizontal) platzieren. Aber ich denke, dass dieser Faktor immer unterschied ist und immer neu berechnet werden muss.

Hier mein wörtlicher Ansatz:

PHP:
Faktor = Origalbildhöhe/80;
NeueBreite = Originalbildbreite/Faktor;
NeueHoehe = Originalbildhöhe/Faktor;

Wenn NeueBreite > 80 dann:

FaktorNeu = NeueBreite/80;
NeueBreite = NeueBreite/FaktorNeu;
NeueHoehe = 80/FaktorNeu;

Jetzt muss ich das erzeugte Bild in ein 80x80 großes Quadrat mittig platzieren. Und mir fehlt jetzt der Gedanke, wie ich die Abstände am besten festlege

PHP:
imagecopymerge($new, $img, X, Y, 0, 0, 78, 80, 100);

Mir fehlt also der X- bzw. der Y-Wert...

Ich hoffe ihr habt verstanden worauf ich hinaus will.
 
Mein Hinwis:
Es wäre besser, nicht die bilder in ein quadratisches Bild hineinzukopieren, sondern einfach quadratische Thumbnails zu erstellen

Ich erkläre es dir an einem Beispiel. Ich hab das mal programmiert, leider aber das Skript verloren. Vielleicht hilft dir meine herangehensweise.

Nehmen wir an du hast ein 400 mal 300 Pixel großes bild (breite mal höhe) - also Querformat, da das Bild breiter als hoch ist.
du musst also dafür sorgen, ersteinmal ein 300*300 großen Teil auszuschneiden (du willst ja möglichst wenig verlust haben).
Nun ermittelst du die Differenz zwischen neuer breiter und alter breite (400-300=100).
Damit gehen 100 Pixel verloren (in der Breite).
Am besten, sollten diese links und rechts je zur Hälfte verloren gehen, nicht wahr?
Also 50 Pixel Links, 50 Pixel rechts.

Nun fängst du also an. Du schneidest entlang der x-Achse ab dem 51. Pixel genau 300 Pixel aus (auf einer Höhe von 300 Pixeln).
Nun hast du temporär ein quadratisches Bild. Dieses machste nun noch ganz einfach zu einem Thumbnail und - ta da, du hast ein schoenes immer gleich bleibendes Thumbnailformat.


Für ein hochformatiges Bild, verläuft der Algorithmus analog.


MfG
 
Genau das wollte ich dadruch vermeiden, nicht einfach irgendwas zurecht schneiden, sondern auf dem Thumbnail das ganze Bild als Vorschau zu haben. Wenn man das sieht, dann weiss man welche "Proportionen" das Bild an sich hat.

Trotzdem danke für die Idee :)

Ist meine Lösung etwa nicht gut? :(
 
Hallo,

ich hab zwar jetzt noch keinen PHP Code für dich, aber warum machst du als X-Koordinate nicht einfach (80 - neue Breite)/2(bzw. dann noch +1, aber ich kenn die PHP Bildfunktionen nicht so) und für die Y-Koordinate (80 - Neue Höhe)/2 ?
 
Zurück