打开文件窗口、保存文件窗口、文件流的方法,废话不多说,直接上码
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.SQLite;
using System.IO;
using System.Diagnostics;
namespace IpadDataConvert
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
/// <summary>
/// 存入图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "JPEG文件(*.jpg;*.jpeg;*.jpe;*.jfjf)|*.jpg;*.jpeg;*.jpe;*.jfjf|PNG文件(*.png)|*.png;|所有图片(*.*)|*.jpg;*.jpeg;*.jpe;*.jfjf;*.png";
openFileDialog.FilterIndex = 0;
openFileDialog.RestoreDirectory = true;
openFileDialog.Title = "请选择图片";
openFileDialog.AddExtension = true;//自动添加扩展名
if (openFileDialog.ShowDialog() != DialogResult.OK)
{
return;
}
if (string.IsNullOrEmpty(openFileDialog.FileName))
{
return;
}
string imageWithPath = openFileDialog.FileName;
string sql = "INSERT INTO Item(title,image) VALUES(?, ?)";
MessageBox.Show(SQLiteDbHelper.Instance.ExecuteNonQuery(sql, new SQLiteParameter("", "test"), new SQLiteParameter("", GetImageData(imageWithPath))).ToString() + "成功");
}
/// <summary>
/// 获取图片流
/// </summary>
/// <param name="imageWithPath"></param>
/// <returns></returns>
private byte[] GetImageData(string imageWithPath)
{
FileStream fs = new FileStream(imageWithPath, FileMode.Open);
byte[] imageData = new byte[fs.Length];
fs.Read(imageData, 0, imageData.Length);
byte[] imageDataAES = AES.AESEncrypt(imageData);
fs.Close();
return imageDataAES;
}
/// <summary>
/// 获取图片
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
string sql = "SELECT * FROM Item WHERE title = ?";
DataTable dt = SQLiteDbHelper.Instance.CreateDataTable(sql, new SQLiteParameter("", "test"));
Item item = new Item();
item.Title = dt.Rows[0]["title"].ToString();
item.ImageByte = (byte[])dt.Rows[0]["image"];
item.ImageByte = AES.AESDecrypt(item.ImageByte);
SaveImage(item);
}
/// <summary>
/// 保存图片
/// </summary>
/// <param name="item"></param>
private static void SaveImage(Item item)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "JPEG文件(*.jpg;*.jpeg;*.jpe;*.jfjf)|*.jpg;*.jpeg;*.jpe;*.jfjf|PNG文件(*.png)|*.png;|所有图片(*.*)|*.jpg;*.jpeg;*.jpe;*.jfjf;*.png";
saveFileDialog.FilterIndex = 0;
saveFileDialog.RestoreDirectory = true;
saveFileDialog.CreatePrompt = true;
saveFileDialog.Title = "选择图片生成的位置";
saveFileDialog.FileName = item.Title;
saveFileDialog.AddExtension = true;//自动添加扩展名
saveFileDialog.OverwritePrompt = true;//覆盖提示框显示
saveFileDialog.CreatePrompt = false;//创建文件不提示
if (saveFileDialog.ShowDialog() != DialogResult.OK)
{
return;
}
if (string.IsNullOrEmpty(saveFileDialog.FileName))
{
MessageBox.Show("文件名不能为空!");
return;
}
string imageWithPath = saveFileDialog.FileName;
using (MemoryStream ms = new MemoryStream(item.ImageByte))
{
using (FileStream fs = new FileStream(imageWithPath, FileMode.Create, FileAccess.Write))
{
byte[] data = ms.ToArray();
fs.Write(data, 0, data.Length);
fs.Flush();
}
}
MessageBox.Show("保存完毕!");
}
}
}