桌面开发之图片读写
读取
要使用照片读写,用c#打开文件查询框并访问代码为
//添加文件
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Multiselect = true;//该值确定是否可以选择多个文件
dialog.Title = "请选择文件夹";
dialog.Filter = "图片文件(*.jpg,*.gif,*.bmp)|*.jpg;*.gif;*.bmp";
if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string path = dialog.FileName;
FileStream fs = File.OpenRead(path); //OpenRead
int filelength = 0;
filelength = (int)fs.Length; //获得文件长度
Byte[] image = new Byte[filelength]; //建立一个字节数组
fs.Read(image, 0, filelength); //按字节流读取
System.Drawing.Image result = System.Drawing.Image.FromStream(fs);
fs.Close();
bitmap= new Bitmap(result);
}
}
储存
为了测试效果,又弄了个另存为的按钮,代码如下
//另存为
private void button3_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Title = "附件另存";
saveFileDialog.Filter = "jpg图片|*.JPG|gif图片|*.GIF|png图片|*.PNG|jpeg图片|*.JPEG";
saveFileDialog.FilterIndex = 3;//设置默认文件类型显示顺序
saveFileDialog.RestoreDirectory = true; //点了保存按钮进入if (picBox1.Image != null)
{
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
string pictureName = saveFileDialog.FileName;
//照片另存
using (MemoryStream mem = new MemoryStream())
{
//这句很重要,不然不能正确保存图片或出错(关键就这一句)
if(bitmap!=null)
//保存到磁盘文件
bitmap.Save(@pictureName);
bitmap.Dispose();
MessageBox.Show("附件另存成功!", "注意", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
其中bitmap为公共成员public Bitmap bitmap;
打开保存jpg/png没有问题,但gif文件打开另存就没有效果了