Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Ok, folgendes Problem: ich würde gern ein Bild aus dem Internet holen und dieses dann anschließend verarbeiten, das Problem ist allerdings, dass das Bild keinerlei Endung hat, also:
Dass das Bild ohne Endung dennoch ein Bild ist, erkennt ein normaler Browser anhand des Headers Content-type, was aber der Interpreter nicht macht... was ich probiert habe sind:
Könntest Du das mit den Sternchen-Importen bitte lassen!? Ich hätte so aus dem Kopf jedenfalls nicht 100%ig ausschliessen können, dass weder `urllib2` noch `cStringIO` den Namen `open` enthalten.
BlackJack hat geschrieben:Könntest Du das mit den Sternchen-Importen bitte lassen!? Ich hätte so aus dem Kopf jedenfalls nicht 100%ig ausschliessen können, dass weder `urllib2` noch `cStringIO` den Namen `open` enthalten.
In [72]: header={"User-agent":"Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)",
"content-type":"image/jpeg"}
In [74]: req = urllib2.Request('http://www.python-forum.de', None, header)
In [75]: imgurl = urllib2.urlopen(req)
In [76]: data = imgurl.read()
Wobei es recht sinnfrei ist dem Server gegenüber zu behaupten die *Anfrage* würde ein JPEG enthalten.
"Content-Type" sendet der Server, der Client dagegen afaik nur einen "Accept"-Header.
Und schicke doch bitte keine User-Agent-Strings von Uralt-Browsern. Wenn das einer auswertet, müssen die Webentwickler diesen Steinzeit-Schrott (speziell alte IE-Versionen) möglicherweise auf Anweisung vom Chef noch supporten - und diese Qual sollte man auch seinen schlimmsten Feinden ersparen.
Y0Gi hat geschrieben:"Content-Type" sendet der Server, der Client dagegen afaik nur einen "Accept"-Header.
und diese Qual sollte man auch seinen schlimmsten Feinden ersparen.
Mmmmh... ich kenne Menschen, für die ist selbst das noch nicht schlimm genug.
Zum Problem:
Ich glaube schlicht nicht, dass die im ersten Posting gezeigte Lösung nicht funktioniert. PIL ist nämlich durchaus in der Lage, das Format eines Bildes (zumindest das einer JPEG-Datei) anhand des File-Headers zu erkennen! Ich habe das ganze mit einer lokalen Datei ohne Erweiterung nachvollzogen, dabei hat PIL das Format des Bildes eindeutig identifiziert: