c# image处理
1.将图片转为字节流
public byte[] SaveImage(String path)//输入图片路径
{
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); //将图片以文件流的形式进行保存
BinaryReader br = new BinaryReader(fs);
byte[] imgBytesIn = br.ReadBytes((int)fs.Length); //将流读入到字节数组中
return imgBytesIn;
}
2.将图片上传到数据库的Blob字段
private void UpLoadEanPic()
{
string picFile = "";
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = false;//该值确定是否可以选择多个文件
dialog.Title = "请选择需要存储到" + custCode + "中的EAN图片";
dialog.Filter = "图片文件(*.jpg,*.gif,*.bmp,*.png)|*.jpg;*.gif;*.bmp;*.png";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
picFile = dialog.FileName;
}
else
{
return;
}
byte[] picBytes = SaveImage(picFile);
string sqlInsertPic = string.Format(@"update cust_code_info set
ean_pic=:picBytes
where cust_code=:custCode");
OracleParameter op1 = new OracleParameter("picBytes", OracleType.Blob);
op1.Value = picBytes;
OracleParameter op2 = new OracleParameter("custCode", OracleType.VarChar);
op2.Value = custCode;
IDataParameter[] parameters = new IDataParameter[]{op1,op2};
int sqlRe = 0;
try
{
sqlRe = DBManager.DBHelp.Instance().ExecuteSql(sqlInsertPic, parameters);
}
catch(Exception ex)
{
MessageBox.Show("上传失败!"+ex.Message);
return;
}
if (sqlRe == 0)
{
MessageBox.Show("上传失败!请检查数据并重试!");
return;
}
else
{
MessageBox.Show("上传成功!");
btn_query_Click(null, null);
}
}
3.将blob字段转为image,即下载图片
private void btn_DownLoadEanPic_Click(object sender, EventArgs e)
{
string custCode = dataGridView1.CurrentRow.Cells["客户料号"].Value.ToString();
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.Description = "请选择文件路径";
if (dialog.ShowDialog() == DialogResult.OK)
{
string foldPath = dialog.SelectedPath;
string sqlGetEanPic = string.Format(@"SELECT
ean_pic
FROM
cust_code_info where cust_code='{0}'", custCode);
object reader = DBManager.DBHelp.Instance().GetDataSingle(sqlGetEanPic);
if (reader == Convert.DBNull)
{
MessageBox.Show("未上传EAN图片,请检查!");
return;
}
byte[] bytes = (byte[])reader;//读到的内容转化成字节流
System.IO.MemoryStream ms = new MemoryStream(bytes);//创建流
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);//从流中创建image对象
string format = GetImageFormat(img);
if (string.IsNullOrEmpty(format))
{
MessageBox.Show("文件格式已经损坏,请重新上传!");
return;
}
img.Save(foldPath + "\\" + custCode + "图片" + format);//将image对象保存成图片存入指定位置
MessageBox.Show("保存成功!");
}
else
{
return;
}
}
4.获取image图片格式
private string GetImageFormat(Image _img)
{
string format;
if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Jpeg))
{
format = ".jpg";
return format;
}
if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Gif))
{
format = ".gif";
return format;
}
if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Png))
{
format = ".png";
return format;
}
if (_img.RawFormat.Equals(System.Drawing.Imaging.ImageFormat.Bmp))
{
format = ".bmp";
return format;
}
format = string.Empty;
return format;
}
不断积累!