PDA

View Full Version : آموزش: ذخیره و بازیابی تصاویر در دیتابیس با فرمت باینری



Iran58
یک شنبه 11 خرداد 1393, 14:48 عصر
سلام
الف) جدول مورد نظر را می سازیم
CREATE TABLE [dbo].[test5](
[id] [int] IDENTITY(1,1) NOT NULL,
[Name] [varbinary](max) NULL,
CONSTRAINT [PK_test5] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]



ب)کد زیر را اجرا می کنیم
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cameras
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
}

private Image img;

private void pictureBox1_Click(object sender, EventArgs e)
{
//pictureBox نمایش عکس در
OpenFileDialog op = new OpenFileDialog();
op.ShowDialog();
pictureBox1.Load(op.FileName);
img = Image.FromFile(op.FileName);
}

private void button1_Click(object sender, EventArgs e)
{
// ذخیره عکس در جدول مورد نظر
System.IO.MemoryStream m = new System.IO.MemoryStream();
img.Save(m,pictureBox1.Image.RawFormat);
byte[] ar = m.GetBuffer();

var db = new CameraDataContext();
test5 t = new test5();
t.Name =ar;
db.test5s.InsertOnSubmit(t);
db.SubmitChanges();
MessageBox.Show("ok!");
}

private void button2_Click(object sender, EventArgs e)
{
//فراخوانی عکس از جدول مورد نظر
byte[] pic1;
var db = new CameraDataContext();
var select = (from c in db.test5s
where c.id == Convert.ToInt32(textBox1.Text)
select c).FirstOrDefault();
// مورد نظرpictureBoxنمایش عکس در
pic1 = select.Name.ToArray();
System.IO.MemoryStream m = new System.IO.MemoryStream(pic1);
pictureBox2.Image = Image.FromStream(m);
}
}
}



دوستان اگر توضیحی یا راه بهتری دارند بیان کنند

hamid_hr
یک شنبه 11 خرداد 1393, 15:15 عصر
در Sqlserver 2008 یا بالاتر میتونی از FileStream استفاده کنی
http://barnamenevis.org/showthread.php?407106-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%AA%D8%B5%D9%88%DB%8C%D8%B1-%D8%AF%D8%B1-%D8%A8%D8%A7%D9%86%DA%A9-(%D8%A2%D8%AF%D8%B1%D8%B3-%D8%B9%DA%A9%D8%B3-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%85%DB%8C%D8%B4%D9%87-%D9%88-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%D8%A2%D8%AF%D8%B1%D8%B3-%D8%B9%DA%A9%D8%B3-%D8%B1%D8%A7-%D9%84%D9%88%D8%AF-%D9%85%DB%8C%DA%A9%D9%86%DB%8C%D9%85)&p=1812094&viewfull=1#post1812094

NASA's Spaceman
یک شنبه 11 خرداد 1393, 16:02 عصر
سلام
دوست عزیز به نظر من اگه عکس رو توی بانک اطلاعات ذخیره نکنی توی سرعت برنامه تاثیر داره و هم تعداد خط های کدنویسی کمتر میشه و توی برنامه ای که بالای 3 هزار خط کد هست درک و فهم این کد نسبت به اون کد سخت تره ( کد 5 خطی)
با سپاس Spaceman