Trang

Tuesday, April 8, 2014

Code up ảnh lên CSDL (Sử dụng kiểu image trong SQL server)



thuvienwinform - Để đưa anh lên CSDL ta phải tạo 1 trường trong bảng với kiểu dữ liệu là image (khi up ảnh lên sẽ chứa trong trường này). Ý tưởng là sẽ convert ảnh cần up lên CSDL thành kiểu memorystream rồi mới up lên. Khi lấy về sẽ dịch ngược lại, từ memorystream thành image!

1. Tạo CSDL



2. Code up ảnh lên CSDL


        //ảnh -> byte[]
        public byte[] imageToByteArray(System.Drawing.Image imageIn)
        {
            MemoryStream ms = new MemoryStream();
            imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
            return ms.ToArray();
        }
        //byte[] -> ảnh
        public Image byteArrayToImage(byte[] byteArrayIn)
        {
            MemoryStream ms = new MemoryStream(byteArrayIn);
            Image returnImage = Image.FromStream(ms);
            return returnImage;
        }

OK! Như vậy là bạn đã có thể up ảnh lên CSDL đc rồi!

Ví dụ sử dụng 2 hàm trên cho 2 nút btChuyenMa và btDichMa (sủ dụng LINQ):
- DB.tbImage: bảng csdl để up ảnh lên, gồm 2 trường là ID và Data


        private void btChuyenMa_Click(object sender, EventArgs e)
        {
            DB.tbImage img = new DB.tbImage();
            img.Data = imageToByteArray(ptbAnh.Image);
            
            db.tbImages.InsertOnSubmit(img);
            db.SubmitChanges();
        }

        private void btDichMa_Click(object sender, EventArgs e)
        {
            var data = (from t in db.tbImages
                        where t.ID == 0
                        select t.Data.ToArray()
                       ).SingleOrDefault();
            b = data;
            ptbLayDL.Image = byteArrayToImage(b);
        }

No comments:

Post a Comment