Frage

Ich weiß nicht, ob dies überhaupt möglich mit PHP, aber ich dachte, wenn es ist, jemand hier weiß, wie. Ich arbeite derzeit an einem Projekt, bei dem Benutzer eine vollständige Körperhaupt Avatar anpassen können der gesamten Website verwendet werden. Es gibt eine Reihe von verschiedenen Gesicht, Haare, etc transparenten PNG-Bildern, die ausgewählt werden können, um ihre individuelle Avatar zu machen. Ich habe diese Arbeit groß, aber hier ist der schwierige Teil. Ich möchte in der Lage sein, das Gesicht zu verwenden, Haare und Bart (wenn männlich), und automatisch ein 80x80 Bild erstellen, die für Forum-Beiträge, etc. als ihre kleine Avatar verwendet wird.

Es gibt einige Hindernisse mit diesem. Erstens, alle Bilder sind 187x404 (große Mengen des Bildes transparent sind, wird das Zeichen Körperbild durch Stapeln der Bilder erreicht, so dass ein Gesichtsbild ist eigentlich nicht so groß). Damit dies funktioniert, würden die Bilder effektiv automatisch beschnitten werden müssen, so dass alle den zusätzlichen Platz entfernt wurde und das tatsächlichen Gesicht, Haar oder Bart an der 80x80 Stelle zeigten.

Das zweite Problem ist, dass einige der Haare oder Bärte (wenn auf dem Full-Size-Gesichtsbild platziert) vorbei an der 80x80 verlängern würden und abgehackt werden. So würde das Bild, um zusammen in voller Größe gestückelt wird, und dann die Größe neu bestimmt in 80x80 zu passen.

Ich weiß, dass die grundlegende Art und Weise die drei Bilder in eine Kombination von ( Kombinieren 2-3 transparente PNG-Bilder auf der jeweils anderen mit PHP ), aber das ist so weit wie ich bekommen habe. Wenn ich verrückt bin, und das ist nicht möglich, dann mir sagen. Ich bin wahrscheinlich Weg, dies overcomplicating, so dass, wenn Sie sehen, und natürlich einfacher Weg, dies zu erreichen, würde ich gerne hören.

War es hilfreich?

Lösung

Der einfachste Weg ist einfach immer das Gesicht / Haar / Bart im gleichen Bereich des Bildes zu passen. Dann gerade diesen Bereich Ernte aus.

Wenn Sie müssen, können Sie zusätzliche Daten für jedes Bild speichern können ein Rechteck im Bild angeben, die muss in dem kleinen Avatar sichtbar. Dann nehmen Sie die maximalen Ende dieser Rechtecken in allen Bildern, die Sie zusammenstellen, und Ernte + dass schrumpft Ihre kleine Avatar Größe nach unten.

jedoch bewusst sein, dass um einige Pixel PNG Bilder Ändern der Größe (z.B. 83x83 -> 80x80) die Qualität wesentlich reduzieren kann, insbesondere für Bilder mit vielen definierten Kanten. Dies ist, weil es viele Pixel in dem neuen Bild ist, das ist [fast] gleichmäßig zwischen 4 Pixeln aus dem Originalbild aufgespalten und in Bildern mit scharfen Kanten führt dies zu verwischen.

So ein Bild schrumpft ein Porträt zu passen ist nicht nur schwierig, sondern reduziert auch die Qualität. Ich würde stattdessen den Bart abschneiden!

Andere Tipps

Ich glaube, Sie zuerst entscheiden müssen, Zuschneiden, Ändern der Größe oder eine Kombination aus beidem (Zuschneiden auf einen größeren Platz und Ändern der Größe, dass).

Wie auch immer, wenn Sie bereits die Bilder zu einem zusammengefügt haben, alle drei Optionen sind leicht in PHP zu tun. Schauen Sie sich auf imagecopyresampled () .

ich dies zu einfach, aber können Sie versuchen:

  1. Spur von max Gesichtsgröße Dimensionen halten Pre-Compositing.

  2. Ausgabe des zusammengesetzten Bildes in eine temporäre Datei.

  3. Crop Quadrat der größten Werte aus Schritt 1

  4. Resize beschnittenen Bildbereich 80 x 80

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top