PHP Thumbnail-Bild ändern der Größe mit Proportionen
Als eine kurze heruntergekommen, ich bin derzeit machen ein dating-Typ-Website. Benutzer können Konten erstellen und hochladen von Profil-Bildern (bis zu 8). Um diese Anzeige im browse-Bereich der website, ich bin auf der Suche nach einer Möglichkeit in PHP (mit third-party-Prozessor/scripts), um die Größe aller Bilder hochgeladen zu haben thumbnails, die sich auf bestimmte Dimensionen.
Als Beispiel, ich will "Profil" - Bilder (thumbnails) werden NICHT größer als 120*150px. Das scripting muss skalieren hochgeladene Bilder (egal ob hoch-oder Querformat, und unabhängig davon, Proportionen) die Einhaltung dieser Maße ohne sich gestreckt.
Breite (zB. 120pixels) sollte immer die gleiche bleiben, aber die Höhe (zB. 150px) variieren kann, um das Bild proportional an. Wenn es eine Landschaft Foto, ich nehme an, das Skript würde müssen nehmen Sie ein Stück aus der Mitte des Bildes?
Dem Grund, dass alle Bilder in der Größe angepasst werden, so dass, wenn profile-Anzeige in einem raster, das alle miniaturen sind etwa die gleiche Größe.
Würde jede Eingabe sehr geschätzt werden.
InformationsquelleAutor Sam | 2011-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese verkleinert alle Bilder proportional basierend auf welche Seite ist länger (Breite oder Höhe), die maximale Größe. Es werden auch Blasen bis alle Bilder kleiner als max, der Sie stoppen kann, mit ein bisschen Kontrolle darüber, ob oder nicht die volle Breite und Höhe sind kleiner als Ihre max. So, 200x300 Bild verkleinert werden, um 100x150, und eine 300x200 Bild verkleinert werden, um 120x80.
Hmm, Sie möchten, dass die Breite immer 120, so würde es ein bisschen ändern, und ja, es wäre zu schneiden, der etwas aus bei einem Bild wie 200x300, denn das würde schrumpfen, 120x180, ohne jede Verzerrung, oder es haben würde, es zu verkleinern, weiter und Briefkasten, aber das sollte Ihnen den Einstieg schön.
Letterboxing in diesem Beispiel würde einfach um herauszufinden, was die richtige x und y starten Sie die Zeichnung, um das neue Bild wäre in der imagecopyresized () - Funktion. Im Falle von so etwas wie 100x150, X-10, ich denke, so würde es 10px freien Platz auf jeder Seite für 120x150 am Ende. Letterboxing 120x80 X wäre 0, aber Y wäre 35, so würde es 35px der leere Raum oben und unten für 120x150.
Würden Sie auch wollen, um $newimg mit $maxwidth,$maxheight, anstatt $newwidth,$newheight, aber die imagecopyresized() würde immer noch verwenden, sowohl $die neuen Werte.
Da bin ich gelangweilt und haben nichts anderes zu tun, diese änderungen würden es tun:
Funktionieren sollte, habe nicht versucht es noch nicht.
InformationsquelleAutor Phoenix
GD oder Imagick-Funktionen sind das, was Sie brauchen, abhängig von Ihrer PHP-Konfiguration.
Sorry, ich bin ein Neuling, kann ich nicht beide links die gleiche Meldung 🙁
Gut zu wissen, danke. +1
InformationsquelleAutor Nabab
Habe ich vor kurzem benötigt php Bildgröße ändern (thumbnail) Lösung und fand Zebra_Image Bibliothek, das ist eine leichte Bild-manipulation-Bibliothek in PHP geschrieben. Der code ist wirklich sauber und es ist auch einfach zu bedienen. Ich empfehle die Nutzung dieser Bibliothek. Der Beispiel-code ist gerade genug, um Ihnen den Einstieg.
Werden, stellen Sie sicher, dass Sie genügend memory limit set in php.ini-Datei, um Bilder zu manipulieren, die haben relativ große Auflösung (e.g 2560x1600). Ich hatte einen Fehler mit großen Bildern und es war kein Fehler, Sie zu drucken. Ich habe ausgetestet, das problem zu
imagecreatefrom{gif,jpeg,png}
Anrufe infunction _create_from_source
im Linien 1262, 1279, und 1288. Die Anrufe wurden silented mit @, so konnte ich keine änderung der Fehler. Ich entfernte @ Zeilen und sah einen PHP-Fehler, dass der Speicher überschritten wurde. Der original-memory-limit wurde auf 32MB und ich erhöhte es auf 64MB. Jetzt kann ich manipulieren 2560x1600 und ich weigere mich, Bilder Bearbeiten, die größer sind.Unten ist der Beispiel code für das controlling der Bild-Auflösung.
(Hinweis: ich benutze Zebra Image-version 2.2.2)
InformationsquelleAutor Eren T.
Können Sie dies mit ImageMagick:
Dieser läuft mit einen shell-Befehl, also in PHP, die Sie verwenden würden
shell_exec()
zum ausführen des obigen Befehls. Ich glaube nicht, dass Sie brauchen keine PHP Erweiterungen.Ein paar flags finden Sie in der ImageMagick-Dokumentation zur Steuerung der Größenänderung. Wenn ich mich Recht erinnere, die
x200
vor der Zahl bedeutet "Maßstab, mit dem gleichen Seitenverhältnis 200px".Schrieb ich eine install-Anleitung für ImageMagick (und ghostscript): Installieren, testen, konvertieren, vergrößern, verkleinern PDF mit ImageMagick, Ghostscript, Windows Vista/7 x64 basierend auf meinen stümperhaften rund, vielleicht kann es dir helfen.
Die andere option ist die GD-Bibliothek (detailliert in dqhendricks Antwort). Dies ist schneller und anscheinend besser dokumentiert, verwendet für grundlegende Operationen.
InformationsquelleAutor Ben
brauchen Sie nicht, sich mit imagick. hier ist ein link, der Sie zu einer Funktion, wird die Größe jedes Bild mit der PHP-GD-zu beliebiger Größe. die Funktion hat zwei Optionen für letterbox-Format-oder crop-to-fit-Methoden zu ändern auf das neue Seitenverhältnis. die Funktion ist auch erklärt gründlich. überprüfen Sie es heraus.
http://www.spotlesswebdesign.com/blog.php?id=1
wenn dies ist, was Sie suchen, wählen Sie bitte das Häkchen bei " diese Antwort. danke!
InformationsquelleAutor dqhendricks
Einige sagt imagic schneller, verwende ich weiter
InformationsquelleAutor Dmitry Zalivadny