图像文件的读入、显示、保存

本文介绍了一个使用C#实现的简单图像加载和保存的功能。通过两个按钮触发,分别完成从本地选择图像并显示,以及将当前显示的图像保存到指定路径的功能。支持多种常见图像格式,包括BMP、JPEG、GIF、TIFF、PNG和ICO。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        private Bitmap srcBitmap = null;
       private Bitmap showBitmap = null;


        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = @"位图文件|*.bmp|"+
                                    @"JPEG|*.jpg;*.jpeg;*.jpe;*.jfif|" +
                                    @"GIF|*.gif|"+
                                    @"TIFF|*.tif;*.tiff|"+
                                    @"PNG|*.png|"+
                                    @"ICO|*.ico|"+
                                    @"所有图片文件|"+
                                    @"*.bmp;*.jpg;*.jpeg;*.jpe;*.jfif;*.gif;*.tif;*.tiff;*.png;*.ico|"+
                                    @"所有文件|*.*";
            openFileDialog.Title = "打开图像文件";
            openFileDialog.FilterIndex = 7;
            if (DialogResult.OK == openFileDialog.ShowDialog())
            {
                srcBitmap = (Bitmap)Bitmap.FromFile(openFileDialog.FileName, false);
                showBitmap = srcBitmap;
                this.AutoScroll = true;
                this.AutoScrollMinSize = new Size((int)(showBitmap.Width), (int)(showBitmap.Height));
                this.Invalidate();
            }
        }

显示图像

        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            if (showBitmap != null)
            {
                Graphics g = e.Graphics;
                g.DrawImage(showBitmap, 
                    new Rectangle(
                        this.AutoScrollPosition.X, 
                        this.AutoScrollPosition.Y, 
                        (int)(showBitmap.Width), 
                        (int)(showBitmap.Height)));
            }
        }

保存图像

        private void button2_Click(object sender, EventArgs e)
        {
            if (showBitmap == null)
                return;
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Filter = @"位图文件|*.bmp|" +
                                    @"JPEG|*.jpg|" +
                                    @"GIF|*.gif|" +
                                    @"TIFF|*.tif|" +
                                    @"PNG|*.png|" +
                                    @"ICON|*.ico";
            saveFileDialog.FilterIndex = 2;
            saveFileDialog.RestoreDirectory = true;
            if (DialogResult.OK == saveFileDialog.ShowDialog())
            {
                ImageFormat format = ImageFormat.Jpeg;
                switch (Path.GetExtension(saveFileDialog.FileName).ToLower())
                {
                    case ".bmp":
                        format = ImageFormat.Bmp;
                        break;
                    case ".jpg":
                        format = ImageFormat.Jpeg;
                        break;
                    case ".gif":
                        format = ImageFormat.Gif;
                        break;
                    case ".tif":
                        format = ImageFormat.Tiff;
                        break;
                    case ".png":
                        format = ImageFormat.Png;
                        break;
                    case ".ico":
                        format = ImageFormat.Icon;
                        break;
                    default:
                        MessageBox.Show(this, "Unsupported image format was specified", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                }
                try
                {
                    showBitmap.Save(saveFileDialog.FileName, format);
                }
                catch (Exception)
                {
                    MessageBox.Show(this, "Failed writing image file", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

转载于:https://www.cnblogs.com/wlts/archive/2012/04/17/2453390.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值