I'm trying to download image from a website and create bitmap based on that image. It looks like this:
public void test()
{
PostWebClient client = new PostWebClient(callback);
cookieContainer = new CookieContainer();
client.cookies = cookieContainer;
client.download(new Uri("SITE"));
}
public void callback(bool error, string res)
{
byte[] byteArray = UnicodeEncoding.UTF8.GetBytes(res);
MemoryStream stream = new MemoryStream( byteArray );
var tmp = new BitmapImage();
tmp.SetSource(stream);
}
I receive "Unspecified error" on last line of callback method. Interesting fact is that if I use BitmapImage(new Uri("SITE")) it works well... (I can't do this like that because I want to grab cookies from that URL. The image is an jpg.
PostWebClient class -> http://paste.org/53413
This is the simplest code from Bitmap class documentation.
System.Net.WebRequest request =
System.Net.WebRequest.Create(
"http://www.microsoft.com//h/en-us/r/ms_masthead_ltr.gif");
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream responseStream =
response.GetResponseStream();
Bitmap bitmap2 = new Bitmap(responseStream);
MSDN link for Bitmap
The easiest way is to open a network stream via a WebClient instance and pass it to the constructor of the Bitmap class:
using (WebClient wc = new WebClient())
{
using (Stream s = wc.OpenRead("http://hell.com/leaders/cthulhu.jpg"))
{
using (Bitmap bmp = new Bitmap(s))
{
bmp.Save("C:\\temp\\octopus.jpg");
}
}
}
You can try below code:
private Bitmap LoadPicture(string url)
{
HttpWebRequest wreq;
HttpWebResponse wresp;
Stream mystream;
Bitmap bmp;
bmp = null;
mystream = null;
wresp = null;
try
{
wreq = (HttpWebRequest)WebRequest.Create(url);
wreq.AllowWriteStreamBuffering = true;
wresp = (HttpWebResponse)wreq.GetResponse();
if ((mystream = wresp.GetResponseStream()) != null)
bmp = new Bitmap(mystream);
}
finally
{
if (mystream != null)
mystream.Close();
if (wresp != null)
wresp.Close();
}
return (bmp);
}
try this:
string url ="http://www.google.ru/images/srpr/logo11w.png"
PictureBox picbox = new PictureBox();
picbox.Load(url);
Bitmap bitmapRemote = (Bitmap) picbox.Image;
url - internet image , we create new instance object PictureBox, then calling NOT ASYNC procedure to load image from url, when image retrieved get image as bitmap.
Also you can use Threading to work with form, call load in other thread and pass deleate method to retrieve image when complete .