C# 画图 保存,读取bmp图像

我在窗口上画图,然后调用savefile窗口
DialogResult result;
string filename;
SaveFileDialog save = new SaveFileDialog();
save.CheckFileExists = false;
save.Filter = " bmp files(*.bmp)|*.bmp|All files(*.*)|*.*";
result = save.ShowDialog();
filename = save.FileName;
if (result == DialogResult.OK)
{
if (filename == string.Empty)
{
MessageBox.Show("Invaild file name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{

//大括号里怎么写可以保存为位图?
}
}
然后就是读取是不是也是一样的?

第1个回答  推荐于2016-08-05
用pictureBox读取和保存位图吧先读取再保存
先读取的代码为:
private void buttonRead_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "BMP图片|*.bmp";
ofd.InitialDirectory=@"C:\Documents and Settings\Administrator\My Documents\My Pictures";//读取的文件目录,我从C盘下我的文档的MyPictures文件夹下读取,看你的电脑哪个盘有图片了,自己改改就好了。
if (ofd.ShowDialog()==DialogResult.OK)
{
this.pictureBox1.Image = Image.FromFile(ofd.FileName);//读取图片放在pictuBox1
}
}
后保存的代码为:
private void buttonSave_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "BMP图片|*.bmp";
sfd.InitialDirectory =Application.StartupPath;//保存的目录在启动项下,可以自己设计保存在哪个盘下
if (sfd.ShowDialog() == DialogResult.OK)
{
string path = sfd.FileName;
this.pictureBox1.Image.Save(path);//保存pictuBox1的图片到指定目录
}
}
其实不仅pictureBox控件可以读取和保存图片了。button,label控件也可以。这些控件的image属性可以读取和保存图片。追问

panel可以不?

追答

我查了下panel控件好像panel没有image这个属性呀 所以panel就不能保存图片了

追问

按照你的方法用了以后抛出一个异常,说
未将对象引用设置到对象的实例
是怎么回事

追答

你没有打开图片 你要先打开图片 你直接按保存 pictureBox控件没有你打开下来的图片怎么可以马上保存了 savefiledialog对话框是用来保存不是用来打开的 这样吧 你把上面保存的代码修改下
private void buttonSave_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "BMP图片|*.bmp";
sfd.InitialDirectory = Application.StartupPath;//保存的目录在启动项下,可以自己设计保存在哪个盘下
if (this.pictureBox1.Image != null)//假如pictureBox控件的image中有图片才执行下面代码
{
if (sfd.ShowDialog() == DialogResult.OK)
{
string path = sfd.FileName;
this.pictureBox1.Image.Save(path);//保存pictuBox1的图片到指定目录
}
}
else//否则
{
//自己写提醒用户要选择好图片然后在保存
}
}

本回答被提问者采纳

用c#编写一个程序读取一张bmp图片的数据并转化为灰度图保存到文件中
Bitmap bmpobj = (Bitmap)img;转换为灰度图片(传入刚才转换为 Bitmap 的对象,返回值为转换后的灰度图片对象):public Bitmap GrayByPixels(Bitmap bmpobj){ for (int i = 0; i < bmpobj.Height; i++){ for (int j = 0; j < bmpobj.Width; j++){ int tmpValue = GetGrayNumCo...

如何用C# 打开和保存BMP文件
Bitmap _Bitmap = (Bitmap)Image.FromFile(@"c:\\1.BMP");BitmapData _BitmapData = _Bitmap.LockBits(new Rectangle(0, 0, _Bitmap.Width, _Bitmap.Height), ImageLockMode.ReadWrite, _Bitmap.PixelFormat);byte[] _Value = new byte[_BitmapData.Stride * _BitmapData.Height];Mars...

怎么用C#把一个24位的bmp位图文件读入到一个数组中?图片的大小事先是...
1.读取文件。使用System.IO命名空间加的一个类库。读取一个文件可以按文本的方式读取,也可以按二进制流的方式读取,按二进制流的方式读取,返回的结果就是一个字节数组。byte[] bmps = System.IO.File.ReadAllBytes("a.bmp");2.所谓路径。路径是文件系统的一个概念,对于一个Windows文件系统来说,...

C#编程保存BMP格式文件
Bitmap bmp = new Bitmap(width, height, format);\/\/ draw source image on the new one using Graphics Graphics g = Graphics.FromImage(bmp);g.DrawImage(src, 0, 0, width, height);g.Dispose();return bmp;} \/\/...

C#如何直接保存图片框内已编辑好的图片?
Image和Bitmap这两个类有保存函数的。Bitmap bmp = new Bitmap(picBox1.Image); \/\/保存到磁盘文件 bmp.Save(@"D\\\\:1.png", Image.Format.JPEG);大概就是这样

关于C#保存图片格式问题
这个就真实决定了你保存出来的是什么格式的图片,即使你上面选择的文件名是比如1.jpg,但用上面的代码保存出来的仍然是一个bmp图(或者说保存的是一个扩展名为jpg的bmp格式的图片),这种文件扩展名与实际格式不符的情况,虽然可以在网页中或者acdsee之类的软件中查看,但是如果用photoshop之类的打开就会...

C#中怎么判断读取的BMP图片是24位彩色图的还是8位的灰度图,最好能详细...
bitmap有一个format属性可以判断图形格式.

c#保存图片的问题,求高手;
好像要先把图片图片显示到picturebox中(如果没,可能会出现为空的情况),然后再从picturebox中读取图片位置并且保存。你可以参考我以前做的 public void Read_Image(OpenFileDialog openF, PictureBox MyImage) \/\/显示选择的图片 { openF.Filter = "*.jpg|*.jpg|*.bmp|*.bmp"; \/\/指定Open...

c# Graphics 画的图形保存问题
一种创建自位图 即你说的Graphics.FromImage(bmp);一种创建自窗体 即你说的放在OnPaint里的那个e.Graphics 对于创建自窗体的graphics对象,不能直接获取它的位图,而是要先获取它所代表的窗体,然后调用窗体的DrawToBitmap方法把窗体的图像画到已有的bitmap对象里,然后再由bitmap的save方法保存 下面跳过...

我用C# 如何保存pictureBox里修改过的图片
);save.Filter = "BMP文件|*.bmp";if (save.ShowDialog() == DialogResult.OK){ Bitmap bm = new Bitmap(pictureBox1.Image);bm.Save(save.FileName);} } 然后你的画图过程同时从FromImage和pictureBox.CreateGraphics获取Graphics,即一图画两次,这样就既画到了图上,又显示在pictureBox上 ...

相似回答