我可以从 Bing Maps 获取 URI,但是当我尝试保存生成的文件(例如,.jpg)时,它是空的(例如,1 x 1 大小)。我已经让它在带有事件处理的 WPF 应用程序中正常工作,但是如何使用控制台应用程序来做到这一点?
这是适用于 WPF 的代码,但相同的代码在控制台应用程序中失败 - 我认为这一定是因为文件保存在事件处理程序中,并且(据我所知)您不能在控制台应用程序中执行此操作。
public void vSaveBitmapImage(string sURI, // created with Bing Maps GeocodeServices
string sLocFname)
{
// save file name so event handler knows it
this.sFname = sLocFname;
try
{
BitmapImage bmpImage = new BitmapImage(new Uri(sURI, UriKind.RelativeOrAbsolute));
// setup event handler - file is saved just fine here
bmpImage.DownloadCompleted += vImage_DownloadCompleted;
}
catch (SystemException sex)
{
string s = sex.Message;
}
}
/// <summary>
/// handle the event that an image download has completed
/// </summary>
private void vImage_DownloadCompleted(object sender,
EventArgs e)
{
try
{
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create((BitmapImage)sender));
using (var filestream = new FileStream(this.sFname, FileMode.Create))
encoder.Save(filestream);
}
catch (SystemException sex)
{
string s = sex.Message;
}
}