首页 > 代码库 > C#图片按比例缩放

C#图片按比例缩放

工具类代码:

技术分享
using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ZoomImage.Utils{    /// <summary>    /// 图片缩放    /// </summary>    public class ZoomImageUtil    {        /// <summary>        /// 图片缩放        /// </summary>        /// <param name="bmp">图片</param>        /// <param name="width">目标宽度,若为0,表示宽度按比例缩放</param>        /// <param name="height">目标长度,若为0,表示长度按比例缩放</param>        public static Bitmap GetThumbnail(Bitmap bmp, int width, int height)        {            if (width == 0)            {                width = height * bmp.Width / bmp.Height;            }            if (height == 0)            {                height = width * bmp.Height / bmp.Width;            }            Image imgSource = bmp;            Bitmap outBmp = new Bitmap(width, height);            Graphics g = Graphics.FromImage(outBmp);            g.Clear(Color.Transparent);            // 设置画布的描绘质量                     g.CompositingQuality = CompositingQuality.HighQuality;            g.SmoothingMode = SmoothingMode.HighQuality;            g.InterpolationMode = InterpolationMode.HighQualityBicubic;            g.DrawImage(imgSource, new Rectangle(0, 0, width, height + 1), 0, 0, imgSource.Width, imgSource.Height, GraphicsUnit.Pixel);            g.Dispose();            imgSource.Dispose();            bmp.Dispose();            return outBmp;        }    }}
View Code

使用示例:

技术分享
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using ZoomImage.Utils;namespace ZoomImage{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {            openFileDialog1.Multiselect = true;        }        private void txtWidth_KeyPress(object sender, KeyPressEventArgs e)        {            if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))            {                e.Handled = true;            }        }        private void txtHeight_KeyPress(object sender, KeyPressEventArgs e)        {            if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))            {                e.Handled = true;            }        }        private void btnSelectImage_Click(object sender, EventArgs e)        {            try            {                if (txtWidth.Text == "" && txtHeight.Text == "")                {                    return;                }                if (openFileDialog1.ShowDialog() == DialogResult.OK)                {                    string path = Path.GetDirectoryName(openFileDialog1.FileNames[0]) + "\\NewImage\\";                    foreach (string fileName in openFileDialog1.FileNames)                    {                        Bitmap bmp = ZoomImageUtil.GetThumbnail(new Bitmap(fileName), Convert.ToInt32(txtWidth.Text == "" ? "0" : txtWidth.Text), Convert.ToInt32(txtHeight.Text == "" ? "0" : txtHeight.Text));                        if (!Directory.Exists(path))                        {                            Directory.CreateDirectory(path);                        }                        File.Delete(path + Path.GetFileName(fileName));                        bmp.Save(path + Path.GetFileName(fileName));                    }                    MessageBox.Show("成功!");                }            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }        }    }}
View Code

 

C#图片按比例缩放