今天我想知道如何将图像保存到Stream(实际上在内存中我可能没有使用适当的术语)并从另一个Thread中读取它。
要做到这一点,我想继续这些步骤: A - 在第一个线程中: 1 - 从文件创建图像对象(System.Drawing) 2 - 创建缩略图 3 - 将缩略图保存到Stream(System.IO) 4 - 将Stream对象发送到第二个Thread。
B - 在第二个线程中: 1 - 从第一个线程接收流 2 - 使用此Stream创建BitmapImage对象 3 - 在UI上显示。 (WPF)
THKS。
答案 0 :(得分:0)
我已经检索了部分代码,并向您展示了我的所作所为:
在检查某些文件夹中的图像的线程中:
public void CreateImgObj(object sender)
{
try
{
FileStream fs = File.Open((string)sender, FileMode.Open);
Bitmap dImg = new Bitmap(fs);
MemoryStream ms = new MemoryStream();
dImg.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
BitmapImage bi_img = new BitmapImage();
bi_img.BeginInit();
bi_img.StreamSource = new MemoryStream(ms.ToArray());
bi_img.EndInit();
evt_send_img(bi_img);
}
catch (Exception e)
{
evt_error(e);
}
}
在UI线程中:
private void img_recieve(object sender)
{
try
{
Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() =>
{
items.Add(new Img { Img_In = (BitmapImage)sender });
}));
}
catch (Exception e)
{
messageerreur(e);
}
}
注意:" img_recieve"由" evt_send_img";
执行THKS