• نحوه ذخیره کردن عکس در پایگاه داده اس کیو ال
  • نحوه بازیابی عکس از پایگاه داده اس کیوال و نمایش در 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)
}

درباره نویسنده

سامان

فارغ التحصیل کارشناسی نرم افزار، علاقه مند به برنامه نویسی، طراحی وب، تکنولوژی های نوین، یادگیری و فیلم

مشاهده تمام مقالات