Rilevamento dell’URL dell’immagine in C # /. NET

C’è un modo per rilevare un URL dell’immagine, come:

http://mysite.com/image.jpg 

ma anche con altri formati? Sto usando C # con .NET 4.0.

Qualcosa di simile a

 bool isImageUrl(string URL){ } 

modifica Intendevo se l’URL punta a un’immagine. Ad esempio, l’URL

 http://mysite.com/image.jpg 

è un’immagine valida, ma

 http://mysite.com/image 

non è.

È ansible inviare una richiesta HTTP all’URL (utilizzando HttpWebRequest ) e verificare se il ContentType restituito inizia con image/ .

Puoi deteminare usando il metodo HEAD di Http (senza scaricare l’intera immagine)

 bool IsImageUrl(string URL) { var req = (HttpWebRequest)HttpWebRequest.Create(URL); req.Method = "HEAD"; using (var resp = req.GetResponse()) { return resp.ContentType.ToLower(CultureInfo.InvariantCulture) .StartsWith("image/"); } } 

Ovviamente potresti semplicemente controllare se l’URL termina con un’estensione di file di immagine conosciuta. Tuttavia, un metodo più sicuro è quello di scaricare effettivamente la risorsa e verificare, se il contenuto che si ottiene in realtà è un’immagine:

 public static bool IsUrlImage(string url) { try { var request = WebRequest.Create(url); request.Timeout = 5000; using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { if (!response.ContentType.Contains("text/html")) { using (var br = new BinaryReader(responseStream)) { // eg test for a JPEG header here var soi = br.ReadUInt16(); // Start of Image (SOI) marker (FFD8) var jfif = br.ReadUInt16(); // JFIF marker (FFE0) return soi == 0xd8ff && jfif == 0xe0ff; } } } } } catch (WebException ex) { Trace.WriteLine(ex); throw; } return false; } 

Puoi semplicemente controllare la stringa con .EndsWith () per ognuna delle stringhe che definisci.

Se vuoi sapere se l’object di quell’URL è effettivamente un’immagine, dovrai eseguire tu stesso la richiesta web e controllare l’intestazione HTTP del tipo di contenuto.

Anche quello può essere inaccurato, tuttavia, a seconda del server.