C# 同比缩放图片
/**
* 无损缩放图片
* 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# 同比缩放图片的更多相关文章
- Andorid-如何为你的Android应用缩放图片
很难为你的应用程序得到正确的图像缩放吗?是你的图片过大,造成内存问题?还是图片不正确缩放造成不良用户体验的结果?为了寻求一个好的解决方案,我们咨询了Andreas Agvard(索尼爱立信软件部门), ...
- Android 等比例缩放图片
// 缩放图片 public static Bitmap zoomImg(String img, int newWidth ,int newHeight){ // 图片源 Bitmap bm = Bi ...
- PHP按最大宽高等比例缩放图片类
本来用phpthumb来缩略图片是十分方便的,但是最近在sae上写项目发现phpthumb在sae上保存文件时会出问题,想来实现一个简单的按最大宽高等比例缩放图片类也并不困难,于是便自己写了一个方便修 ...
- IOS 缩放图片常用方法
/** * 指定Size压缩图片 (图片会压缩变形) * * @param image 原图 * @param size 压缩size * * @return 压缩后的图片 */ -(UIImage* ...
- Android拖动和缩放图片
Android拖动和缩放图片 2014年5月9日 我们在使用应用其中常常须要浏览图片.比方在微信其中.点击图片之后能够对图片进行缩放. 本博客介绍怎样对图片进行拖拽和缩放.这首先要了解Android中 ...
- JavaScript等比例缩放图片
js等比例缩放图片,这个功能非常实用,当网页加载一个尺寸比较大的图片时,往往会把一个网页撑的变形,页面变得很难看,于是我们就想到了用JS去控制超出一定范围的图片,以稳定页面布局,本代码段就是完成了此功 ...
- JS实现等比例缩放图片
JS实现等比例缩放图片 2014-01-19 21:57 by 龙恩0707, 40 阅读, 0 评论, 收藏, 编辑 JS实现等比例缩放图片 有时候我们前端页面只有500×500像素的宽和高的布局, ...
- php 上传缩放图片
有时上传图片时因为图片太大了,不仅占用空间,消耗流量,而且影响浏(图片的尺寸大小不一).下面分享一种等比例不失真缩放图片的方法,这样,不管上传的图片尺有多大,都会自动压缩到我们设置尺寸值的范围之内.经 ...
- 【转】java缩放图片、java裁剪图片代码工具类
一首先看下效果 二工具类 三测试类 在系统的上传图片功能中,我们无法控制用户上传图片的大小,用户可能会上传大到几十M小到1k的的图片,一方面图片太大占据了太多的空间,另一方面,我们没办法在页面上显示统 ...
随机推荐
- 3D Computer Grapihcs Using OpenGL - 19 Vertex Array Object(顶点数组对象)
大部分OpenGL教程都会在一开始就讲解VAO,但是该教程的作者认为这是很不合理的,因为要理解它的作用需要建立在我们此前学过的知识基础上.因此直到教程已经进行了一大半,作者才引入VAO这个概念.在我看 ...
- sql中left join、right join、inner join的区别
转自https://www.cnblogs.com/pcjim/articles/799302.html left join.right join.inner join区别 left join(左联 ...
- Vuex入门(转)
参考:https://segmentfault.com/a/1190000015782272 https://www.cnblogs.com/y896926473/p/6709733.html 如果你 ...
- 第三周课程总结&实验报告(一)
实验报告(一) 1.打印输出所有的"水仙花数",所谓"水仙花数"是指一个3位数,其中各位数字立方和等于该数本身.例如,153是一个"水仙花数" ...
- 日常linux命令
绝对路径用什么符号表示?当前目录.上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 绝对路径: 如/etc/init.d 当前目录和上层目录: ./ . ...
- 【MM系列】SAP OX09中的地址如何取
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP OX09中的地址如何取 ...
- ssh远程连接linux服务器并执行命令
详细方法: SSHClient中的方法 参数和参数说明 connect(实现ssh连接和校验) hostname:目标主机地址 port:主机端口 username:校验的用户名 password:登 ...
- pandas中.value_counts()的用法
原文链接:https://www.jianshu.com/p/f773b4b82c66 value_counts()是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值 ...
- 根据select的option文本选中对应的选项
function selectByOptionTxt(obj,txt){ var optionArr = $(obj).find("option"); for(var i=0;i& ...
- ubuntu server安装的一些坑
[没有root用户] ubuntu server安装的时候要你新建一个用户,安装完成后,你需要手动开启root. $ sudo passwd root 输入你当前用户的密码 输入你希望的root用户的 ...