对图片等比例压缩不失真


//drawType=0表示是预览绘制,1表示是从本地选择了的绘制
private Bitmap DrawImg(Image img, Size container, int drawType = 0)
{
System.Drawing.Imaging.ImageFormat thisFormat = img.RawFormat;
int sW = 0, sH = 0;
// 按比例缩放
int sWidth = img.Width;
int sHeight = img.Height;
if ((sHeight > container.Height || sWidth > container.Width) && (sHeight != sWidth))
{
if ((sWidth * container.Height) > (sHeight * container.Width))
{
sW = container.Width;
sH = (container.Height * sHeight) / sWidth;
}
else
{
sH = container.Height;
sW = (sWidth * container.Height) / sHeight;
}
}
else
{
sW = sWidth;
sH = sHeight;
}
Bitmap outBmp = new Bitmap(container.Width, container.Height);
Graphics g = Graphics.FromImage(outBmp);
g.Clear(Color.Transparent);
// 设置画布的描绘质量
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImage(img, new Rectangle((container.Width - sW) / 2, (container.Height - sH) / 2, sW, sH), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel);
//1表示是从本地选择了的绘制
if (drawType == 1)
{
//保存压缩图片
_imgZip = new Bitmap(sW, sH);
Graphics g2 = Graphics.FromImage(_imgZip);
g2.DrawImage(img, new Rectangle(0, 0, sW, sH), 0, 0, img.Width, img.Height, GraphicsUnit.Pixel);
g2.Dispose();
}
g.Dispose();
return outBmp;
}

转载于:https://www.cnblogs.com/why1115/p/4810295.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值