Seltsames Image Problem

11/09/2009 - 15:28 von Thomas Hübner | Report spam
Hi NG,

ich habe ein Browsercontrol in dem ich verschiedene Bilder darstelle
("<img src='URL'">) Das klappt zu 100%. Jetzt wollte ich einen Cache
(Pfad im userverzeichnis) etablieren da es sich um hàufig
wiederkehrende Bilder (Avatare) handelt. Ich lade mir also das
betreffende Bild wenn es im Cache nicht existiert per Webclient in ein
Verzeichnis:

Dim wc As New Net.WebClient
wc.DownloadFile("URL", "Pfad")

und gebe dem Image den lokalen Pfad. Das funktioniert aber nur zu 90%,
d.h. manche Bilder werden im Browsercontrol nicht angezeigt wenn sie
von lokal kommen. Am Dateinamen kann es nicht liegen, da dieser immer
aus einer Zahl (Long) und der originalen Extension besteht.

Gegenprobe im IE8 - Bild wird auch nicht angezeigt
Gegenprobe FF3.5 - Bild wird angezeigt
Gegenprobe Windows Bild/Faxanzeige - Bild wird angezeigt

Versuche ich in VB ein solches Bild per

Dim b As New Bitmap("Pfad")

Bekomme ich eine Exception von System.Drawing. Woran kann das liegen?
Kann man so ein Bild mit VB Bordmitteln reparieren?

Alternativ fange ich jetzt den Fehler ab, und lade das Bild direkt aus
der URL. Das ist aber eher Workaround.

Gruß,
Thomas
 

Lesen sie die antworten

#1 Christoph Schneegans
11/09/2009 - 15:47 | Warnen spam
Thomas Hübner schrieb:

Das funktioniert aber nur zu 90%, d.h. manche Bilder werden im
Browsercontrol nicht angezeigt wenn sie von lokal kommen.



Du kannst nicht einfach HTTP-Ressourcen auf die Platte speichern.
Die HTTP-Ressource könnte komprimiert sein, und ich bin mir nicht
sicher, daß der WebClient automatisch dekomprimiert. Achte auf
Header wie "Content-Encoding: gzip" in der HTTP-Antwort.

Ferner gibt es in HTTP keine Dateierweiterung; vielmehr wird der
Inhaltstyp durch den "Content-Type"-Header bestimmt. Eine .gif-Datei
darf durchaus unter "http://www.example.org/foo.jpg" abgelegt sein,
wenn der Server "Content-Type: image/gif" schickt. Du mußt beim
Speichern die Dateierweiterung anpassen, das tun Browser ja auch.

Idealerweise nennst du die originalen URLs derjenigen Bilder, die
Probleme machen.

Bist du dir überhaupt sicher, daß du jedes Bild korrekt
heruntergeladen hast? Wenn es im Browser funktioniert, muß es nicht
notwendigerweise im WebClient funktionieren; ggf. fehlen Cookies,
manche Server unterscheiden auch absichtlich nach dem "User-Agent"-
Header in der Anfrage. Möglicherweise erhàlt der WebClient gar keine
Bilddatei, sondern eine HTML-Fehlermeldung. Schau dir die
heruntergeladenen Dateien mit einem Texteditor an.

<http://schneegans.de/web/xhtml/> · Klare Antworten zu XHTML

Ähnliche fragen