- نحوه ذخیره کردن عکس در پایگاه داده اس کیو ال
- نحوه بازیابی عکس از پایگاه داده اس کیوال و نمایش در picturebox
- چاپ عکس
نحوه ذخیره عکس در پایگاه داده اس کیوال
اول یک picture box روی فرم قرار دهید و یک openfiledialog به فرم اضافه نمایید
بعد یک دکمه روی فرم بذارید و کد زیر رو توی اون بنویسید
کد:
string s = Environment.CurrentDirectory; ofd.Filter = "JPEG (*.JPG) | *.jpg|" + "Bitmap Files (*.bmp) | *.bmp"; if (ofd.ShowDialog() == DialogResult.OK) { strBK = ofd.FileName; pic_BK.Image = System.Drawing.Bitmap.FromFile(strBK); } Environment.CurrentDirectory = s;
برای درج می توانید از این تابع استفاده کنید
کد:
public void INSERT_Picture_BK(string _ConnectionString, string path, string _FormName) { MyFunction MF = new MyFunction(); objConnection.ConnectionString = _ConnectionString; objCommand.Connection = objConnection; string strFileStream = string.Empty; strFileStream = path; if (strFileStream != null && strFileStream != "") { FileStream stream = new FileStream(strFileStream, FileMode.Open, FileAccess.Read); BinaryReader reader = new BinaryReader(stream); byte[] photo = reader.ReadBytes((int)stream.Length); reader.Close(); stream.Close(); objCommand.Parameters.Add("@Pic", SqlDbType.VarBinary, photo.Length).Value = photo; } else { objCommand.Parameters.Add("@Pic", SqlDbType.VarBinary).Value = DBNull.Value; } objCommand.CommandText = string.Format("UPDATE Pic_Main SET MainPic = @Pic WHERE Index_ = {0}", 0); try { objConnection.Open(); objCommand.ExecuteNonQuery(); } catch (SqlException error) { MessageBox.Show("درخواست مورد نظر قابل اجرا نمی باشد ، لطفاً بعداً اقدام نمایید", "اخطار", MessageBoxButtons.OK, MessageBoxIcon.Error); MF.WriteError(error.Number, error.Message, _FormName, "SELECT_Picture_BK"); } objConnection.Close(); }
این تابع رو با دستور زیر باید فراخوانی کنید
کد:
INSERT_Picture_BK(_ConnectionString, strBK, _FormName);
در دیتابیس هم یک فیلد از نوع زیر تعریف کنید
کد:
varbinary(MAX)
نحوه بازیابی عکس از پایگاه داده اس کیوال و نمایش در picturebox
using System; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.IO; public class MainClass { public static void Main() { SqlConnection imageConnection = new SqlConnection("مسیر دیتابیس"); SqlCommand imageCommand = new SqlCommand(@"select imagefile,imagedata from imagetable ",imageConnection); imageConnection.Open(); SqlDataReader imageReader = imageCommand.ExecuteReader(); string imageFilename = (string) imageReader.GetValue(0); byte[] imageBytes = (byte[]) imageReader.GetValue(1); MemoryStream ms = new MemoryStream(imageBytes); Bitmap bmap = new Bitmap(ms); imageReader.Close(); imageConnection.Close(); } }
چاپ عکس
سه شی PrintDocument و PrintDialog و PrintPreviewDialog رو روی فرم قرار دهید و با کد زیر عکس پیکچر باکس رو چاپ کنید
private void button1_Click(object sender, EventArgs e) { PrintDialog1.ShowDialog() PrintPreviewDialog1.Document = PrintDocument1 PrintPreviewDialog1.ShowDialog() } private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { e.Graphics.DrawImage(PictureBox1.Image, 10, 10) }
تو ی اولین کد که در باتن نوشتید strbk دقیقا چی هستش و چی کار میکنه؟