使用GetThumbnailImage进行图片缩放操作
/// <summary>
/// 获取等比例缩放图片的方法
/// </summary>
/// <param name="imgPath">待缩放图片路径</param>
/// <param name="savePath">缩放图片保存路径</param>
/// <param name="format">缩放图片保存的格式</param>
/// <param name="scaling">要保持的宽度或高度</param>
/// <param name="keepWidthOrHeight">如果为true则保持宽度为scaling,否则保持高度为scaling</param>
/// <returns></returns>
public bool GetThumbnail(string imgPath, string savePath, ImageFormat format, int scaling, bool keepWidthOrHeight)
{
try
{
using (Bitmap myBitmap = new Bitmap(imgPath))
{
int width = 0;
int height = 0;
int tw = myBitmap.Width;//图像的实际宽度
int th = myBitmap.Height;//图像的实际高度
if (keepWidthOrHeight)//保持宽度
{
#region 自动保持宽度
if (scaling >= tw)
{
width = tw;
height = th;
}
else
{
double ti = Convert.ToDouble(tw) / Convert.ToDouble(scaling);
if (ti == 0d)
{
width = tw;
height = th;
}
else
{
width = scaling;
height = Convert.ToInt32(Convert.ToDouble(th) / ti);
}
}
#endregion
}
else
{
#region 自动保持高度
if (scaling >= th)
{
width = tw;
height = th;
}
else
{
double ti = Convert.ToDouble(th) / Convert.ToDouble(scaling);
if (ti == 0d)
{
width = tw;
height = th;
}
else
{
width = Convert.ToInt32(Convert.ToDouble(tw) / ti);
height = scaling;
}
}
#endregion
}
using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, () => { return false; }, IntPtr.Zero))
{
myThumbnail.Save(savePath, format);
}
}
return true;
}
catch
{
return false;
}
}
上面的方法适合在vs2008中使用,如果是2005只需将 using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, () => { return false; }, IntPtr.Zero))这句换成using (Image myThumbnail = myBitmap.GetThumbnailImage(width, height, new Image.GetThumbnailImageAbort(delegate { return false; }), IntPtr.Zero))即可。
使用示例:GetThumbnail("d:/1.jpg", "d:/2.jpg", ImageFormat.Jpeg, 263, false);
使用GetThumbnailImage进行图片缩放操作的更多相关文章
- .net学习笔记----利用System.Drawing.Image类进行图片相关操作
C#中对图片的操作主要是通过System.Drawing.Image等类进行. 一.将图片转换为字节流 /// <summary> /// 图片处理帮助类 /// </summary ...
- Android图片缩放方法
安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...
- Android安卓开发中图片缩放讲解
安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...
- Android----基于多触控的图片缩放和拖动代码实现
引自:http://www.codefans.net/articles/584.shtml 一个android中自定义的ImageView控制,可对图片进行多点触控缩放和拖动类,包括了对图片放大和图片 ...
- java多图片上传--前端实现预览--图片压缩 、图片缩放,区域裁剪,水印,旋转,保持比例。
java多图片上传--前端实现预览 前端代码: https://pan.baidu.com/s/1cqKbmjBSXOhFX4HR1XGkyQ 解压后: java后台: <!--文件上传--&g ...
- CSS实现图片缩放特效
今天是感恩节,祝大家感恩节快乐哦!最近天冷了,大家注意保暖哟.下面一起看看小颖写的demo吧. html代码: <!DOCTYPE html> <html> <head& ...
- HTML5 图片缩放功能
腾讯新闻上用的插件(xw.qq.com) 缩放插件scale.js (function(window, undefined) { var document = window.document, sup ...
- PHP图片裁剪_图片缩放_PHP生成缩略图
在制作网页过程中,为了排版整齐美观,对网页中的图片处理成固定大小尺寸的图片,或是要截去图片边角中含有水印的图片,对于图片量多,每天更新大量图,靠人工PS处理是不现实的,那么有没有自动处理图片的程序了! ...
- iOS开发UI篇—UIScrollView控件实现图片缩放功能
iOS开发UI篇—UIScrollView控件实现图片缩放功能 一.缩放 1.简单说明: 有些时候,我们可能要对某些内容进行手势缩放,如下图所示 UIScrollView不仅能滚动显示大量内容,还能对 ...
随机推荐
- 合并Spark社区代码的正确姿势
原创文章,转载请保留出处 最近刚刚忙完Spark 2.2.0的性能测试及Bug修复,社区又要发布2.1.2了,国庆期间刚好有空,过了一遍2.1.2的相关JIRA,发现有不少重要修复2.2.0也能用上, ...
- MSSQL查询数据分页
这几天刚好碰到数据的分页查询,觉得不错,Mark一下,方法有两种,都是使用select top,效率如何就不在这讨论 方法1:利用select top配合not in(或者not exists),查询 ...
- 如何在Windows系统中配置Mysql群集(Mysql Cluster)
MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单个MySQL服务器故障不会对系统产生巨大的负面效应,系统的稳定性得到保障. Mysql群集(Cluster)简介 M ...
- python3.6如何安装pymssql
使用pip install pymssql安装时,总是会出现UnicodeDecodeError.于是下载了适用的pymssql.whl进行安装,详细可参考 https://docs.microsof ...
- Java多线程——创建线程的两种方式
创建线程方式一:继承Thread类. 步骤:1,定义一个类继承Thread类.2,覆盖Thread类中的run方法.3,直接创建Thread的子类对象创建线程.4,调用start方法开启线程并调用线程 ...
- C# 相对路径转绝对路径
如果是路径相对路径,使用 Path 转换 System.IO.Path.Combine(文件夹, relativePath); 文件夹就是相对的文件夹. 这样就可以把相对路径转绝对. 参见:http: ...
- 虚拟机VMware Workstation Pro下安装ubuntu-14.04.4(64位)方法(附ubuntu-14.04-desktop-amd64.iso下载链接)
ubuntu-14.04-desktop-amd64.iso下载: 链接:http://pan.baidu.com/s/1bFi0d4 密码:yx0l 零基础linux使用入门教学视频分享: 链接:h ...
- Kotlin——最详细的控制语句使用
在前面 的章节中讲解了Kotlin语言中的数据类型.变量与常量的定义.不了解请参见前面的内容: Kotlin从无到有系列之数据类型介绍. Kotlin从无到有系列之变量.常量.注释的使用. 下面详细为 ...
- C#学习笔记-观察者模式
题目1:几个同事为了在上班期间偷偷看休息,做点其他的事情,就和小秘偷偷联系了一下,如果老板回来了,就麻烦小秘偷偷通知一声,这样方便大家及时变更自己的工作状态. 分析: 根据题目分析,首先明确,肯定会有 ...
- FastDFS 简介
FastDFS开源的分布式文件系统,功能包括:文件存储,文件同步,文件访问(文件上传,文件下载等),解决了大容量存储和负载均衡的问题,特别适合以文件为载体的在线服务,如服务网站,视频网站等 FastD ...