Gyu*_*l R 2 c# sql-server picturebox winforms
我试图从我的表中插入一些图像来自picturebox:
MemoryStream ms = new MemoryStream();
pictureBox1.Image.Save(ms, ImageFormat.Jpeg);
byte[] photo = new byte[ms.Length];
ms.Position = 0;
ms.Read(photo, 0, photo.Length);
command.CommandText = "INSERT INTO ImagesTable (Image) VALUES('" + photo + "')";
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
我在数据库中得到以下结果:
ID Image
6 0x53797374656D2E427974655B5D
Run Code Online (Sandbox Code Playgroud)
但是,当我插入一些图像使用SQL script:
insert into ImagesTable (Image)
SELECT BulkColumn
FROM Openrowset( Bulk 'C:\pinguins.jpg', Single_Blob) as img
Run Code Online (Sandbox Code Playgroud)
然后插入的数据如下所示:
ID Image
4 0xFFD8FFE000104A464946000102010[.....]
Run Code Online (Sandbox Code Playgroud)
这里二进制数据要长得多.
当我从数据库中检索此图像时picturebox,它显示正确:
command.CommandText = "SELECT Image FROM ImagesTable where ID = 4";
byte[] image = (byte[])command.ExecuteScalar();
MemoryStream ms1 = new MemoryStream(image);
pictureBox2.Image = Bitmap.FromStream(ms1);
Run Code Online (Sandbox Code Playgroud)
但是在使用ID = 6(从中加载pictureBox)检索图像时出现错误.
ArgumentException: Parameter is not valid.
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我很感激任何建议.
这样写:]
Image img = Image.FromFile(@"C:\Lenna.jpg");
byte[] arr;
using (MemoryStream ms = new MemoryStream())
{
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
arr = ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)
要么
Image img = picturebox1.Image();
byte[] arr;
ImageConverter converter = new ImageConverter();
arr=(byte[])converter.ConvertTo(img, typeof(byte[]));
command.CommandText = "INSERT INTO ImagesTable (Image) VALUES('" + arr + "')";
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46929 次 |
| 最近记录: |