Holen Sie sich die Bild-Abmessungen mit Curl
Ich würde gerne in der Höhe*Breite des remote-image. Könnte man mit Curl, und wenn ja, wie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde gerne in der Höhe*Breite des remote-image. Könnte man mit Curl, und wenn ja, wie?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Höhe und Breite des Bildes sind Attribute, die innerhalb der image-Datei, und Sie müssen retieve die Datei zu zugreifen. Je nach Bild-format, diese Eigenschaften werden in verschiedenen Orten von den Bild-Metadaten. Sie können dies tun, mit getimagesize, aber Bedenken Sie, dass Sie tatsächlich abrufen das ganze Bild, die Auswirkungen auf die Leistung von Ihren Betrieb.
In der Veranstaltung von einem großen Bild, können Sie versuchen, etwas wie start-fecthing das Bild auf Ihren server an, und sobald Sie beginnen empfangen von Daten und wissen, das format des image aus, warten Sie, bis Sie genug vom Bild zum Blick auf die Höhe und Breite der Informationen und die übertragung beenden. Sie werden wahrscheinlich brauchen, um diese Arbeit zu tun, sich selbst, als Bild-Bibliotheken und eingebauten Funktionen, APIs wohl erwarten wird das ganze Bild richtig zu arbeiten.
Wenn durch Zufall Sie die Kontrolle der server, wo die Bilder sind, Sie sind besser, schreiben ein kleines Skript gehostet, die server, die ein Bild-Datei-id gibt die Höhe und Breite für das Bild.
getimagesize() ist die Funktion, die Sie möchten.
Sollte in der Lage sein laden Sie eine remote-Bildern und zu analysieren.
Edit: mehr Als eine direkte Antwort auf Ihre Frage, Curl nicht analysieren, ein Bild direkt, aber es kann sicherlich Holen Sie es für Sie, in dem Fall kann man dann verwenden Sie die GD-Bibliothek zu analysieren. getimagesize() aber die Holen so gut, obwohl, so können Sie verlassen Curl aus der Gleichung heraus.
Hoffentlich separaten post ist gerechtfertigt, wie ich war besorgt, dass diese Antwort wäre verloren, da einfach ein Kommentar auf meinem vorherigen post. Und warum denke, das verdient einen eigenen post, Fragen Sie? Gut, ich denke ich habe eine Antwort gefunden.
Gewährt, bin ich über die CLI-version eher als libcurl (in Ihrer Sprache) aber ich futzed weit genug herum, bis ich eine funktionierende Antwort. Es ist wie folgt:
Was ist hier passiert im obigen Beispiel ist CURL ist mit dem -r flag-Anforderung werden nur die ersten 25 bytes der Datei und Rohrleitungen, die zu den imagemagick-Befehl namens IDENTIFIZIEREN, wo es extrahiert die Abmessungen und druckt diese in das angegebene format.
Weitere über die Informationen, die Sie extrahieren können mit IDENTIFIZIEREN besuchen http://www.imagemagick.org/script/identify.php
Machen Sie den Befehl ein bisschen mehr Skript freundlich ich würde hinzufügen "2> /dev/null" am Ende zum unterdrücken von Fehlermeldungen (stderr):
Im Gegensatz zu GIF-Bildern, wo die Dimensionen scheinen fest gebunden zu den ersten 10-20 bytes, es nicht angezeigt zu sein, eine Feste Menge von bytes, die erforderlich sind, um die Dimensionen von Daten aus einer JPEG-Datei. Einige weitere Tests haben gezeigt, dass für die großen Bilder, die Sie brauchen könnten, auf Anforderung bis zu den ersten ~10k zu bekommen, um die Dimensionen der Daten. Ein gutes Beispiel ist der folgende 4MB Bild von der NASA: http://veimages.gsfc.nasa.gov/17921/southern_africa_25jul02_lrg.jpg ich festgestellt, dass nicht weniger als 5971 bytes machen die Dimensionen (10836 x 9324), aber ich denke, dass ist besser, als dass ein download die ganze Sache.
Punkt ist...kann Ihre Laufleistung variieren, so versuchen Sie es selbst heraus.
Curl können das nicht. Zitat aus http://curl.haxx.se/
Curl kann verwendet werden, um Blick auf die http-Header und raten den Bild-Typ, aber um zu bestimmen, die Abmessungen des Bildes müssen Sie das Bild selbst.
Können Sie zB. die Python-Imaging-Library, um tatsächlich überprüfen Sie die dimension, wenn das Bild heruntergeladen wurde obwohl.
Pro CURL-docs:
Gegeben, dass Sie verlangen können, nur Teile des Bildes über CURL, die Sie könnte sehr gut in der Lage sein zu erreichen, was, die Sie suchen, zu tun. Nun der Schlüssel ist in der Lage, übergeben Sie den partiellen Bild zu etwas wie GD (oder die Anwendung der Wahl) zu extrahieren und Bericht der Bild-Dimensionen.
Wenn Sie nur mit JPEG-Ihr Leben wird einfacher, da die Maße gespeichert sind, in den Anfang der Datei im header mit bestimmten Markierungen. Siehe andere Diskussion hier bei stackoverflow mit dem Titel "Erste Bild-Größe von JPEG-Bildern aus dem binären".
Aber es braucht etwas mehr Arbeit, es scheint so etwas bekommen würde, Sie an die richtige marker:
Einige andere Bezugsquellen, die ich stieß beim googlen für JPEG-info:
Gelesen JPEG Abmessungen, die in C++ Lesen, ohne die ganze Datei
http://www.64lines.com/jpeg-width-height
Gelesen JPEG Abmessungen, die in C# Lesen, ohne die ganze Datei
http://code.msdn.microsoft.com/ReadingJPEGSize
Gelesen JPEG Abmessungen in Java Lesen, ohne die ganze Datei
Java/ImageIO erste Bild-Dimensionen Lesen, ohne die gesamte Datei?
JPEG Header Info
http://web.archive.org/web/20080224153210/http://www.obrador.com/essentialjpeg/headerinfo.htm