public ListFetchImages(string Url) { List imageList = new List (); //Append http:// if necessary if (!Url.StartsWith("http://") && !Url.StartsWith("https://")) Url = "http://" + Url; string responseUrl = string.Empty; string htmlData = ASCIIEncoding.ASCII.GetString(DownloadData(Url, out responseUrl)); if (responseUrl != string.Empty) Url = responseUrl; if (htmlData != string.Empty) { string imageHtmlCode = "'); //make sure data will be inside img tag int start = htmlData.IndexOf(imageSrcCode) + imageSrcCode.Length; int end = htmlData.IndexOf('"', start + 1); //Extract the line if (end > start && start < brackedEnd) { string loc = htmlData.Substring(start, end - start); //Store line imageList.Add(loc); } //Move index to next image location if (imageHtmlCode.Length < htmlData.Length) index = htmlData.IndexOf(imageHtmlCode, imageHtmlCode.Length); else index = -1; } //Format the image URLs for (int i = 0; i < imageList.Count; i++) { string img = imageList[i]; string baseUrl = GetBaseURL(Url); if ((!img.StartsWith("http://") && !img.StartsWith("https://")) && baseUrl != string.Empty) img = baseUrl + "/" + img.TrimStart('/'); imageList[i] = img; } } return imageList; } private byte[] DownloadData(string Url) { string empty = string.Empty; return DownloadData(Url, out empty); } private byte[] DownloadData(string Url, out string responseUrl) { byte[] downloadedData = new byte[0]; try { //Get a data stream from the url WebRequest req = WebRequest.Create(Url); WebResponse response = req.GetResponse(); Stream stream = response.GetResponseStream(); responseUrl = response.ResponseUri.ToString(); //Download in chuncks byte[] buffer = new byte[1024]; //Get Total Size int dataLength = (int)response.ContentLength; //Download to memory //Note: adjust the streams here to download directly to the hard drive MemoryStream memStream = new MemoryStream(); while (true) { //Try to read the data int bytesRead = stream.Read(buffer, 0, buffer.Length); if (bytesRead == 0) { break; } else { //Write the downloaded data memStream.Write(buffer, 0, bytesRead); } } //Convert the downloaded stream to a byte array downloadedData = memStream.ToArray(); //Clean up stream.Close(); memStream.Close(); } catch (Exception) { responseUrl = string.Empty; return new byte[0]; } return downloadedData; }
Friday, February 4, 2011
Code For Fetch Images from a URL using C#.net
Labels:
C#.Net
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment