我想将字节数组转换为图像.
这是我获取字节数组的数据库代码:
public void Get_Finger_print()
{
try
{
using (SqlConnection thisConnection = new SqlConnection(@"Data Source=" + System.Environment.MachineName + "\\SQLEXPRESS;Initial Catalog=Image_Scanning;Integrated Security=SSPI "))
{
thisConnection.Open();
string query = "select pic from Image_tbl";// where Name='" + name + "'";
SqlCommand cmd = new SqlCommand(query, thisConnection);
byte[] image =(byte[]) cmd.ExecuteScalar();
Image newImage = byteArrayToImage(image);
Picture.Image = newImage;
//return image;
}
}
catch (Exception) { }
//return null;
}
Run Code Online (Sandbox Code Playgroud)
我的转换代码:
public Image byteArrayToImage(byte[] byteArrayIn)
{
try
{
MemoryStream ms = new MemoryStream(byteArrayIn,0,byteArrayIn.Length);
ms.Write(byteArrayIn, 0, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用上传图片MVC 6; 但是,我无法找到班级HttpPostedFileBase.我检查过GitHub,没有运气.有谁知道上传文件的正确方法MVC6?
我有一个PictureBox的图像指向某个文件"A".在执行时我想将PictureBox的图像更改为另一个"B"但我收到以下错误:
"mscorlib.dll中出现'System.IO.IOException'类型的第一次机会异常附加信息:进程无法访问文件"A",因为它正由另一个进程使用."
我将Image设置如下:
pbAvatar.Image = new Bitmap(filePath);
Run Code Online (Sandbox Code Playgroud)
如何解锁第一个文件?
我用了
private BitmapImage byteArrayToImage(byte[] byteArrayIn)
{
try
{
MemoryStream stream = new MemoryStream();
stream.Write(byteArrayIn, 0, byteArrayIn.Length);
stream.Position = 0;
System.Drawing.Image img = System.Drawing.Image.FromStream(stream);
BitmapImage returnImage = new BitmapImage();
returnImage.BeginInit();
MemoryStream ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
ms.Seek(0, SeekOrigin.Begin);
returnImage.StreamSource = ms;
returnImage.EndInit();
return returnImage;
}
catch (Exception ex)
{
throw ex;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我的应用程序中的此方法将字节数组转换为图像.但它抛出"参数无效"异常..为什么会发生..?有没有其他方法.??
我要将字节数组转换为System.Windows.Media.Imaging.BitmapImage并BitmapImage在图像控件中显示.
当我使用第一个代码时,注意到了!没有错误,也没有显示图像.但是当我使用第二个时,它工作正常!任何人都可以说发生了什么事吗?
第一个代码在这里:
public BitmapImage ToImage(byte[] array)
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(array))
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = ms;
image.EndInit();
return image;
}
}
Run Code Online (Sandbox Code Playgroud)
第二个代码在这里:
public BitmapImage ToImage(byte[] array)
{
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = new System.IO.MemoryStream(array);
image.EndInit();
return image;
}
Run Code Online (Sandbox Code Playgroud) 我有一个图像的字节数组(存储在数据库中).我想创建一个Image对象,创建几个不同大小的图像并将它们存储回数据库(将其保存回字节数组).
我并不担心数据库部分或调整大小.但有没有一种简单的方法来加载Image对象而不将文件保存到文件系统,然后在我调整大小时将其放回到字节数组中?如果可以的话,我想在记忆中做到这一点.
Something like:
Image myImage = new Image(byte[]);
or
myImage.Load(byte[]);
Run Code Online (Sandbox Code Playgroud) 有没有办法将ImageSource对象转换为字节数组?我有一个绑定到WPF窗口的ImageSource对象,我可以从数据库转换一个字节数组并将其转换为ImageSource,但我不能以相反的方式.
Thx提前.
编辑:我试图将ImageSource转换为BitmapImage,但得到一个null对象.
我正在寻找快速的方法 Picturebox 将图像转换为字节数组。
我看到了这段代码,但我不需要它。因为图像的图片框是从数据库读取的数据。所以我不知道ImageFormat
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
所以如果有人知道快速方法请告诉我
谢谢!玩的很开心!
我已经搜索了整个Stack Overflow,但我找不到以下答案:
当我使用我的OpenFileDialog时,我打开的文件被阻止使用我的程序,直到我关闭我的程序.因此,如果我打开图像,则不允许在Windows资源管理器中替换该图像.
我认为这是处理我的OpenFileDialog的问题,但我不知道如何解决它...
我的代码:
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Title = "Open Image";
ofd.Filter = "PNG Image(*.png|*.png" +
"|GIF Image(*.gif|*.gif" +
"|Bitmap Image(*.bmp|*.bmp" +
"|JPEG Compressed Image (*.jpg|*.jpg";
if (ofd.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(ofd.FileName);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为该using块可以解决这个问题,但是没有...它仍然被程序使用.我想在图片框中加载图像,然后我希望图像再次可用(所以我可以重命名,替换它等等).
c# ×7
picturebox ×3
wpf ×3
image ×2
.net ×1
arrays ×1
bitmapimage ×1
byte ×1
bytearray ×1
bytebuffer ×1
dispose ×1
file ×1
gdi+ ×1
using ×1