Wie ändern Sie die Größe von einem Bild der Hohen Auflösung mit PHP
Ich bin mit der Verarbeitung der Bilder, wenn der Benutzer lädt ein pic aber mein problem ist die hohe rez Bilder. Wie kann Sie erkennen, wenn der user-uploads ein? Ich bin mit der GD-Bibliothek für PHP. Einstellung der Qualität auf 90 mit der imagejpeg () - Methode tut nichts, um es aber Skalen, die der dimension und legt dann die ppi bis 72. Ich möchte in der Lage sein, zu bewahren die dimension und drop die ppi 72 zur gleichen Zeit. Jede Beratung würde sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine solche Sache wie PPI, soweit Sie betroffen werden müssen. Auch, DPI existiert nicht in der digitalen. Es sind nur Pixel, und die Dimensionen (die nur ein mess-Pixel in jede Richtung).
Was Sie wirklich versuchen zu tun ist, das Downsampling eines Bildes, die Verringerung der Abmessungen eines Bildes. Sie werden wahrscheinlich wollen, es zu tun, proportional, das heißt, Sie wollen, halten Sie das gleiche Verhältnis von Breite zu Höhe, so dass das Bild nicht gestreckt angezeigt werden, nachdem die Neuberechnung es. Zudem erwähnenswert ist, das resizing und resampling unterscheiden, dass die Größenänderung nicht zahlen viel Aufmerksamkeit auf den Inhalt, was optisch sehr Armen verkleinerten Bilder. Sie wollen wahrscheinlich ein resampling.
Die PHP-Dokumentation hat einige großartige Beispiele auf Umgang mit hochgeladenen Dateien sowie wie man die Größe von Bildern mit der GDImage Bibliothek. Ich schlage vor, Sie überprüfen Sie Sie heraus. Andere relevante Methoden, die Sie möglicherweise wissen wollen:
PPI, DPI...
Zuerst, lassen Sie uns die Terminologie klären. Beide PPI (Pixel pro Zoll) und DPI (dot per inch) sind Kennzahlen, die angeben, Umwandlung von Pixeln, zu physischen Maßeinheiten (Zoll in diesem Fall). In der digitalen Welt - Computer, Bilder, ... DPI irrtümlich verwendet, wo PPI sollte stattdessen verwendet werden. DPI in der Tat existieren nur in einer Druck-Welt. Aber für uns ist jetzt, DPI = PPI. >> Mehr info
Die Auflösung (manchmal verwiesen auf als DPI, aber es ist PPI) gespeichert ist, in den Header (Bild meta-Informationen). JPG und PNG unterstützen; aber GIF unterstützt keine DPI - es ist nicht in der GIF header.
Ändern PPI in PHP
So, sind Sie wahrscheinlich Fragen, wie Sie festlegen, PPI (DPI) in der Bild-header? In PHP, können Sie es mit Imagick Bibliothek (natürlich nicht für GIFs):
Wenn Sie laden Sie diese Bilder und versuchen Sie zu drucken, z.B. in IrfanView, es wird tatsächlich nutzen die dpi-Informationen zu konvertieren Pixel zu Ziel-physische Einheit. Beide Bilder werden gedruckt, in verschiedenen Größen.
Bild PPI wird nicht funktionieren auf web
Schlechte Nachricht ist, dass wird sich nicht ändern alles bei der Anzeige des Bildes auf einer Webseite. Die Anker-Einheit für die Anzeige ist immer ein pixel in CSS. So
img.jpg
und dieimg-500dpi.jpg
haben genau die gleiche Größe im browser. Sogar, wenn Sie öffnen die Bilder direkt. Auch, wenn Sie als physikalische Einheit wiecm
:beide Bilder angezeigt werden, in der gleichen Größe; physikalische Einheiten in Pixel umgewandelt werden, unabhängig von der Bildauflösung mit festes Verhältnis. Und überraschend, auch wenn Sie versuchen, um drucken die raw-Bilder (nicht die Seite) in Firefox, werden Sie sowohl gedruckt werden auf die gleiche Größe. Kann nicht kommentieren auf anderen Browsern. Seltsam genug - dies funktioniert wie erwartet in Irfanview.
PPI und das retina-Bilder
Nun mit iPhone etc. Netzhaut (d.h. hohe Auflösung) Bilder sind immer trendy. Hier wird viel davon gesprochen, DPI (PPI in der Tat), aber das ist alles nur in Bezug auf das Zielgerät und die CSS media queries.
Es gibt nichts, das müsste eigentlich erkennen das PPI des Bildes; Sie geben die tatsächlichen Abmessungen des high-res retina-Bildes in Pixel. Dies ist ein Beispiel für 66x66 Symbol (von hier aus):
So können Sie tatsächlich "downscale" die high-res Bilder von Einstellung der unteren Dimensionen für die Sie in der CSS -. Ich würde aber nur empfehlen, dies zu tun für retina-Bilder und in richtigen Medien-Abfrage.
Also, Sie haben, um ein Resampling in PHP
So, in der Tat, wenn Sie wollen hochgeladene Bild kleiner erscheinen "auf der Webseite", ist der beste Weg zu resamplen. Resampling bedeutet, nicht zu ändern nur die überschrift, sondern auf die tatsächlichen pixel-matrix des Bildes. Hier ist der code, den ich verwenden in PHP, die verwendet die GD-library:
Sich bewusst sein, dass diese benötigt Recht viel Speicher, die begrenzt werden von Ihrem hosting-provider.
Wenn man sich mit hi-res-Bilder viel, ich würde nach unten gehen, den ImageMagick-Pfad, wie es ist fastert + gibt viel mehr Informationen über die Bilder + kannst du schreiben, Bilder mit 300 DPI (oder andere Auflösung), wenn Sie wollen.
Hier ist, was ich mit Jcrop und ImageMagick (aber bei 72 DPI)
Mit phpthumb (http://phpthumb.gxdlabs.com) ist eine gute, elegante und einfache Lösung.
Habe ich ein funktionierendes code-Beispiel Verwendung es hochgeladen GitHub. Es kann sowohl die GD & Imagemagick, es ist bis zu Ihnen.
https://github.com/lopezator/thumbNailGenerator
bool Imagick::setResolution ( float $x_resolution , float $y_resolution )
Wenn Sie reduzieren ppi), die Dimensionen ändern sich entsprechend der Reduktion - weniger Pixel pro Zoll bedeuten, dass es weniger Zoll zu Ihrem Bild.