/**
* 无损缩放图片
* bitmap 需要缩放的图片
* w 需要缩放的宽度
* h 需要缩放的高度
* */
public static System.Drawing.Bitmap TBScaleBitmap(System.Drawing.Bitmap bitmap, int w, int h, string mode)
{
System.Drawing.Bitmap map = new System.Drawing.Bitmap(w, h);
System.Drawing.Graphics gra = System.Drawing.Graphics.FromImage(map);
gra.Clear(System.Drawing.Color.Transparent);//清空画布并以透明背景色填充
gra.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias; //使绘图质量最高,即消除锯齿
gra.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
gra.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
gra.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
gra.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; int towidth = w;
int toheight = h; int x = ;
int y = ;
int ow = bitmap.Width;
int oh = bitmap.Height; switch (mode)
{
case "HW": //指定高宽缩放(可能变形)
break;
case "W": //指定宽,高按比例
toheight = bitmap.Height * w / bitmap.Width;
break;
case "H": //指定高,宽按比例
towidth = bitmap.Width * h / bitmap.Height;
break;
case "Cut": //指定高宽裁减(不变形)
if ((double)bitmap.Width / (double)bitmap.Height > (double)towidth / (double)toheight)
{
oh = bitmap.Height;
ow = bitmap.Height * towidth / toheight;
y = ;
x = (bitmap.Width - ow) / ;
}
else
{
ow = bitmap.Width;
oh = bitmap.Width * h / towidth;
x = ;
y = (bitmap.Height - oh) / ;
}
break;
case "MaxHW"://最大宽高比例缩放,比如原100*50->50*30,则结果是50*25
var rmaxhw_d1w = bitmap.Width * 1.0 / w;
var rmaxhw_d2h = bitmap.Height * 1.0 / h;
if (rmaxhw_d1w > rmaxhw_d2h)
{
if (rmaxhw_d1w <= )
{
towidth = bitmap.Width; h = bitmap.Height;
goto case "HW";
}
towidth = w;
goto case "W";
}
if (rmaxhw_d2h <= )
{
towidth = bitmap.Width; h = bitmap.Height;
goto case "HW";
}
toheight = h;
goto case "H";
default:
break;
} gra.DrawImage(bitmap, new System.Drawing.Rectangle(, , towidth, toheight), new System.Drawing.Rectangle(x, y, ow, oh), System.Drawing.GraphicsUnit.Pixel); gra.Flush();
gra.Dispose();
bitmap.Dispose();
return map;
}

C# 同比缩放图片的更多相关文章

  1. Andorid-如何为你的Android应用缩放图片

    很难为你的应用程序得到正确的图像缩放吗?是你的图片过大,造成内存问题?还是图片不正确缩放造成不良用户体验的结果?为了寻求一个好的解决方案,我们咨询了Andreas Agvard(索尼爱立信软件部门), ...

  2. Android 等比例缩放图片

    // 缩放图片 public static Bitmap zoomImg(String img, int newWidth ,int newHeight){ // 图片源 Bitmap bm = Bi ...

  3. PHP按最大宽高等比例缩放图片类

    本来用phpthumb来缩略图片是十分方便的,但是最近在sae上写项目发现phpthumb在sae上保存文件时会出问题,想来实现一个简单的按最大宽高等比例缩放图片类也并不困难,于是便自己写了一个方便修 ...

  4. IOS 缩放图片常用方法

    /** * 指定Size压缩图片 (图片会压缩变形) * * @param image 原图 * @param size 压缩size * * @return 压缩后的图片 */ -(UIImage* ...

  5. Android拖动和缩放图片

    Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...

  6. JavaScript等比例缩放图片

    js等比例缩放图片,这个功能非常实用,当网页加载一个尺寸比较大的图片时,往往会把一个网页撑的变形,页面变得很难看,于是我们就想到了用JS去控制超出一定范围的图片,以稳定页面布局,本代码段就是完成了此功 ...

  7. JS实现等比例缩放图片

    JS实现等比例缩放图片 2014-01-19 21:57 by 龙恩0707, 40 阅读, 0 评论, 收藏, 编辑 JS实现等比例缩放图片 有时候我们前端页面只有500×500像素的宽和高的布局, ...

  8. php 上传缩放图片

    有时上传图片时因为图片太大了,不仅占用空间,消耗流量,而且影响浏(图片的尺寸大小不一).下面分享一种等比例不失真缩放图片的方法,这样,不管上传的图片尺有多大,都会自动压缩到我们设置尺寸值的范围之内.经 ...

  9. 【转】java缩放图片、java裁剪图片代码工具类

    一首先看下效果 二工具类 三测试类 在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统 ...

随机推荐

  1. [luogu]P3959 宝藏[NOIP][状态压缩DP]

    [luogu]P3959 宝藏[TREASURE] 题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的 ...

  2. Card Game Cheater

    Card Game Cheater Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  3. 使用私有仓库(Docker Registry 2.0)管理镜像

    1. 执行以下命令新建并启动一个Docker Registry 2.0 docker run -d -p 5000:5000 --restart=always --name registry2 reg ...

  4. Python 使用PyQt5进行开发(一)

    Qt  是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器. 我们先简单使用Qt进行一个小工 ...

  5. C语言:结构体中(.)和(->)的区别

    https://blog.csdn.net/faihung/article/details/79190039 这虽然是个小问题,但有时候很容易让人迷惑,因为有的时候用混淆了,程序编译不通过. 下面说说 ...

  6. 转:C语言inline详细讲解

    本文介绍了GCC和C99标准中inline使用上的不同之处.inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而 ...

  7. springboot日期格式转换

    post: @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") GET: @Dat ...

  8. MAC截图工具

    截图快捷键 ctrl+shift+A

  9. 一个JSON解析器

    来源 <JavaScript语言精粹(修订版)> 代码 <!DOCTYPE html> <html> <head> <meta charset=& ...

  10. python+selenium元素定位之XPath学习01

    参考文档1:https://www.w3school.com.cn/xpath/xpath_syntax.asp 参考文档2:https://www.runoob.com/xpath/xpath-tu ...