我想将 jpg 图像存储在 Sqlite 数据库中,目前我正在使用以下代码:
public byte[] ImageToByte(Image image, System.Drawing.Imaging.ImageFormat format)
{
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, format);
byte[] imageBytes = ms.ToArray();
return imageBytes;
}
}
void btn_click()...
{
photo = new Bitmap("invoker.jpg");
pic = ImageToByte(photo, System.Drawing.Imaging.ImageFormat.Jpeg);
SaveImage(pic);
}
更新 :
void SaveImage(byte[] imagen)
{
string conStringDatosUsuarios = @" Data Source = \bang.sqlite3 ;Version=3";
SQLiteConnection con = new SQLiteConnection(conStringDatosUsuarios);
SQLiteCommand cmd = con.CreateCommand();
cmd.CommandText = String.Format("INSERT INTO tbl_pictures (record_id, pic) VALUES ('1', @0);");
SQLiteParameter param = new SQLiteParameter("@0", System.Data.DbType.Binary);
param.Value = imagen;
cmd.Parameters.Add(param);
con.Open();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception exc1)
{
MessageBox.Show(exc1.Message);
}
con.Close();
}
最佳答案
我认为从 jpg 创建位图是导致尺寸增加的步骤。实际上,我很惊讶它只是增加了 2 倍的尺寸!
根据维基百科 ( http://en.wikipedia.org/wiki/JPEG#Sample_photographs ),压缩率可以从 2.6 倍到 46 倍甚至更高。 ;)
关于c# - Sqlite 中存储的图像占用了 2 倍的空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16510487/