我有一个a的实例,System.Drawing.Bitmap并希望以一种形式将它提供给我的WPF应用程序System.Windows.Media.Imaging.BitmapImage.
对此最好的方法是什么?
我将图像保存在数据库中...但如何从数据库中检索该图像..当我尝试使用system.drawing ..它显示一个错误..一些ppl说我不能在wpf中使用system.drwa ..甚至不是dll文件..
我的代码是
private void btnShow_Click(object sender, RoutedEventArgs e)
{
DataTable dt2 = reqBll.SelectImage().Tables[0];
byte[] data = (byte[])dt2.Rows[0][1];
MemoryStream strm = new MemoryStream();
strm.Write(data, 0, data.Length);
strm.Position = 0;
System.Drawing.Image img = System.Drawing.Image.FromStream(strm);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
ms.Seek(0, SeekOrigin.Begin);
bi.StreamSource = ms;
bi.EndInit();
ImgBox.Source = bi;
}
Run Code Online (Sandbox Code Playgroud)
现在做什么?
我使用了system.drawing.dll ..现在我可以使用system.drawing.bitmap ..但是在使用它之后会在System.Drawing.Image.FromStream(strm)中显示错误;
错误: - 用户代码未处理参数异常
参数无效.
我想在我的WPF应用程序中将Image转换为ImageSource.我使用Code128库正常工作(已在WinForms应用程序中检查).下面的函数返回正确大小的ImageSource,但没有任何内容可见.
private ImageSource generateBarcode(string number)
{
var image = Code128Rendering.MakeBarcodeImage(number, 1, false);
using (var ms = new MemoryStream())
{
var bitmapImage = new BitmapImage();
image.Save(ms, ImageFormat.Bmp);
bitmapImage.BeginInit();
ms.Seek(0, SeekOrigin.Begin);
bitmapImage.StreamSource = ms;
bitmapImage.EndInit();
return bitmapImage;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:最好的方法是下面的Clemens评论的方法.比使用memorystream快约4倍.
我使用 C#,wpf。我有一个图像,它以以下形式存储:byte[]
public interface IFile
{
int Id { get; set; }
byte[] FileData { get; set; }
string FileName { get; set; }
int? FileSize { get; set; }
string FileExtension { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何在表单上显示我的图像(FileData byte[])?
<GroupBox BorderThickness="1">
<Image Source="..."/>
</GroupBox>
Run Code Online (Sandbox Code Playgroud)
Source="..."如果我从一个字节[]创建一个临时文件,我必须写进去?