微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – SqLite中存储的图像占用的空间增加了2倍

我想将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创建一个Bitmap是导致大小增加的步骤.实际上,我很惊讶这只是2倍的尺寸增加!

根据维基百科(http://en.wikipedia.org/wiki/JPEG#Sample_photographs),压缩比可以从2.6倍到46倍以上.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐