代码写多了,有些使用过的方法和技巧会一时半会想不起来,平日记录下来,方便自己和有需要的人日后查阅。

using (var stream = new FileStream(physicalPath, FileMode.Open, FileAccess.Read))
{
Bitmap target = null;
int targetWidth, targetHeight;
try
{
using (var bitmap = new Bitmap(stream))
{
var size = bitmap.PhysicalDimension;
if (size.Width > size.Height)
{
if (size.Width > _maximumWidth)
{
targetWidth = _maximumWidth;
targetHeight = (int)size.Height * _maximumWidth / (int)size.Width;
}
else
{
targetWidth = (int)size.Width;
targetHeight = (int)size.Height;
} if (targetHeight >= _maximumHeight)
{
targetWidth = targetWidth * _maximumHeight / targetHeight;
targetHeight = _maximumHeight;
}
}
else
{
if (size.Height > _maximumHeight)
{
targetHeight = _maximumHeight;
targetWidth = (int)size.Width * _maximumHeight / (int)size.Height;
}
else
{
targetHeight = (int)size.Height;
targetWidth = (int)size.Width;
} if (targetWidth >= _maximumWidth)
{
targetHeight = targetHeight * _maximumWidth / targetWidth;
targetWidth = _maximumWidth;
}
} SizeF targetSize = SizeF.Empty; targetSize = new SizeF(targetWidth, targetHeight); target = new Bitmap(targetWidth, targetHeight);
using (var graphics = Graphics.FromImage(target))
{
graphics.CompositingQuality = compositingQuality;
graphics.InterpolationMode = interpolationMode;
graphics.CompositingMode = CompositingMode.SourceCopy; graphics.DrawImage(bitmap, , , targetSize.Width, targetSize.Height);
}
} context.Response.ContentType = "image/jpg";
using (MemoryStream memoryStream = new MemoryStream())
{
target.Save(memoryStream, ImageFormat.Jpeg);
memoryStream.WriteTo(context.Response.OutputStream);
}
}
finally
{
if (target != null)
{
target.Dispose();
}
}
}

C# 缩略图算法的更多相关文章

  1. ImageUtils

    JavaSE package com.easystructure.utils.system; import java.awt.Color; import java.awt.Font; import j ...

  2. SW数据库结构列表

    数据表列表 PE_Admin:管理员信息表 PE_Advertisement:广告信息表 PE_AdZone:版位信息表 PE_Announce:公告信息表 PE_AreaCollection:采集信 ...

  3. PHP-生成缩略图和添加水印图-学习笔记

    1.开始 在网站上传图片过程,经常用到缩略图功能.这里我自己写了一个图片处理的Image类,能生成缩略图,并且可以添加水印图. 2.如何生成缩略图 生成缩略图,关键的是如何计算缩放比率. 这里,我根据 ...

  4. Asp.Net 上传图片并生成高清晰缩略图

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

  5. java生成生成图片缩略图

    /** * */ package com.fkhwl.fkhserver.core.utils; import java.awt.Image; import java.awt.image.Buffer ...

  6. android 视频的缩略图 缓存机制和 异步加载缩略图

    在这次的工作开发项目中,涉及到一个视频缩略图的视频列表:这个在大家看来,制作视频缩略图就是两行代码就搞定的事.确实是这样的,百度一下,每个帖子都知道制作视频缩略图的方法,在这里确实也是一样的,但是我要 ...

  7. Java 图片处理——如何生成高清晰度而占有磁盘小的缩略图

    现在的web项目,图片越来越多,图片大小也越来越大,随便就能达到1M,2M,甚至更大.用户上传的图片,一般是无法直接使用的.一般要生成两三种对应的缩略图,分别适配不同的终端,不同的场景.比如PC,手机 ...

  8. 黄聪:C#图片处理封装类(裁剪、缩放、清晰度、加水印、生成缩略图)有示例(转)

    C#图片处理示例(裁剪,缩放,清晰度,水印) 吴剑 2011-02-20 原创文章,转载必需注明出处:http://www.cnblogs.com/wu-jian/ 前言 需求源自项目中的一些应用,比 ...

  9. Asp.Net 上传图片并生成高清晰缩略图(转)

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

随机推荐

  1. BROCADE 300和MD3200扩展柜FC SAN,截图

    这表示俺玩过,其实,这个光交换机在只有一个共享存储的情况下,可用可不用. FC BROCADE只是为了方便后期扩展. FC SAN之类的识别不靠IP,因为不是IP SAN嘛.但也是自己的识别体系.

  2. Ftp的断点下载实现

    思路:首先获取本地临时文件的大小,在通过FTp的REST命令获取远程文件的偏移,然后再RETR命令在偏移处下载.while循环对比本地文件和远程文件的字节大小,如此 不断的反复以上过程,直到远程文件字 ...

  3. android 自定义titlebar

    首先,修改标题栏的宽度和背景,在style.xml中添加: <style> <item name="android:background">@drawabl ...

  4. 【HDOJ】5155 Harry And Magic Box

    DP.dp[i][j]可以表示i行j列满足要求的组合个数,考虑dp[i-1][k]满足条件,那么第i行的那k列可以为任意排列(2^k),其余的j-k列必须全为1,因此dp[i][j] += dp[i- ...

  5. Two Sum 解答

    Question: Given an array of integers, find two numbers such that they add up to a specific target nu ...

  6. 「Githug」Git 游戏通关流程

    Githug 他喵的这是个啥!?难道不是 GitHub 拼错了么,和 Git 什么关系? 和游戏又有什么关系? 其实,他的元身在这里:https://github.com/Gazler/githug  ...

  7. Q - Tour - hdu 3488(最小匹配值)

    题意:一个王国有N个城市,M条路,都是有向的,现在可以去旅游,不过走的路只能是环(至少也需要有两个城市),他们保证这些城市之间的路径都是有环构成的,现在至少需要走多少路. 分析:因为是有向图所以,而且 ...

  8. java排序算法-归并排序

    public class MergeSort { private static void mergeSortTest() { int[] in = { 2, 5, 3, 8, 6, 7, 1, 4, ...

  9. spring mvc model.addAttribute页面c:forEach取不到

    昨天和今天都在解决一个问题,即: @RequestMapping(value = "/listAccounts", method = RequestMethod.GET) publ ...

  10. Gmail邮件功能那么强大,GMail被封,在国内怎么用gmail收邮件?

    IT圈子里最热门的话题一定是:gmail被封,该怎么办?gmail由于强大的邮件功能,ITer一定是人手一个or多个,之前想要收发gmail使用imap或SMTP方式是可以在国内正常使用的,目前ima ...