c# 创建缩略图
- /// <summary>
- /// 创建缩略图
- /// </summary>
- /// <param name="srcFileName"></param>
- /// <param name="destFileName"></param>
- private static void CreateThumbnailImage(string srcFileName, string destFileName)
- {
- using (var img = new Bitmap(srcFileName))
- {
- Size originalSize = new Size(img.Width, img.Height);
- Size targetSize = new Size(, );
- targetSize = CalculateNewImageSize(originalSize, targetSize);
- using (
- var bitmap = new Bitmap(targetSize.Width, targetSize.Height, PixelFormat.Format32bppArgb))
- {
- using (Graphics g = Graphics.FromImage(bitmap))
- {
- g.InterpolationMode = InterpolationMode.Low;
- using (var wrapmode = new ImageAttributes())
- {
- wrapmode.SetWrapMode(WrapMode.TileFlipXY);
- g.DrawImage(img, new Rectangle(, , targetSize.Width, targetSize.Height),
- , ,
- img.Width,
- img.Height,
- GraphicsUnit.Pixel,
- wrapmode);
- }
- }
- bitmap.Save(destFileName);
- }
- }
- }
- /// <summary>
- /// 计算缩略图的尺寸
- /// </summary>
- /// <param name="originalSize"></param>
- /// <param name="targetSize"></param>
- /// <returns></returns>
- private static Size CalculateNewImageSize(Size originalSize, Size targetSize)
- {
- if (originalSize.Width <= targetSize.Width&&
- originalSize.Height<=targetSize.Height)
- {
- //目标尺寸比原尺寸大,那么直接使用原尺寸
- return originalSize;
- }
- double targetRatio = GetRatio(targetSize);
- double originalRatio = GetRatio(originalSize);
- var size = new Size(targetSize.Width, targetSize.Height);
- if (originalRatio < targetRatio)
- {
- size.Width = (originalSize.Width*targetSize.Height)/originalSize.Height;
- }
- else
- {
- size.Height = (originalSize.Height*targetSize.Width)/originalSize.Width;
- }
- return size;
- }
- private static double GetRatio(Size size)
- {
- return (double) size.Width/size.Height;
- }
支持大文件的缩略图,800M的bmp图片缩放到300*300大概100kb左右
c# 创建缩略图的更多相关文章
- PHP 创建缩略图
一.成比例缩小图像 <?php /* 创建缩略图 */ $file = __DIR__.'/button.png'; $scale = 0.5; // 比例 $image = ImageCrea ...
- php 使用GD库上传图片以及创建缩略图
php 使用GD库上传图片以及创建缩略图 GD库是PHP进行图象操作一个很强大的库. 先在php.ini里增加一行引用:extension=php_gd2.dll 重启apache.做一个测试页 ...
- 使用GDI+轻松创建缩略图
Gdi+ 还是相当好用的. 1> Image保存图像,需要一个CLSID的参数,它可以这样获得: int GetEncoderClsid(const WCHAR* format, ...
- Win+PHP+IECapt完整实现网页批量截图并创建缩略图
最近在开发一个本地互联网应用的项目,为了增加用户体验,需要在搜索结果左侧显示如图一所示的某个网站的缩略图效果,在网上不停地百度谷歌了一上午后,发现大多数实现少量截图还是可以的,如果大批量的截图总会在中 ...
- JavaScript with Image:创建缩略图
当图片很大,直接把图片从Server下载到浏览器上看是一种很不明智的做法,浪费了服务器的资源,网络带宽和客户端的资源.所以,通常Server和Client之间会传输缩略图,只有当Client请求某张图 ...
- python创建缩略图和选择轮廓效果
# -*- encoding:utf-8 -*- ''' 改变颜色 --- 颜色反转''' from PIL import Image nest = Image.open("D:\\tk.j ...
- 使用 Amazon S3 触发器创建缩略图
使用 Amazon S3 触发器创建缩略图 环境 centos (注意,必须是Linux环境) node12.x 安装教程 curl -sL https://rpm.nodesource.com/se ...
- scrapy下载图片到自己的目录,创建缩略图,存储入库
环境和工具:python2.7,scrapy 实验网站:http://www.27270.com/tag/333.html 爬去所有兔女郎图片,下面的推荐需要过滤 逻辑:分析网站信息,下载图片和入库 ...
- JS创建缩略图
<script language="javascript"> //显示缩略图 function DrawImage(ImgD,width_s,height_s){ /* ...
随机推荐
- java程序实现Unicode码和中文互相转换
根据前一篇的补充问题http://blog.csdn.net/fancylovejava/article/details/10142391 有了前一篇文章的了解,大概了解了unicode编码格式了 ...
- linux下tomcat的配置及项目的部署流程
Java的安装配置 1. 在/etc/profile文件中配置相应的信息(如下) export JAVA_HOME=/usr/java/jdk1.6.0_20 export JRE_HOME=/usr ...
- linux安全相关
2017-05-11突然谈到linux安全相关的话题,记录一下 搜了一下,找到一篇介绍apparmor和selinux的文章 http://www.361way.com/apparmor-selinu ...
- SrpingCloud 之SrpingCloud config分布式配置中心
Config架构 当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可 ...
- Add Tags to Neutron Resources
给一个network加上tag,用来: Ability to map different networks in different OpenStack locations to one logica ...
- Linux下查看Python安装了哪些脚本模块
Linux下查看Python安装了哪些脚本模块 1.什么是rpm ? rpm 即RedHat Package Management,是RedHat的发明之一 .现在包括OpenLinux.fedora ...
- java学习进度条四
- 理解javascript this 值
如何确定this的值 this值会被传递给所有函数,this的值是基于运行时调用函数的上下文. 例如:从全局作用域调用sayFoo函数时,this引用window对象 当它作为myObject的一种方 ...
- 快速构建hibernate框架
手动配置Hibernate框架的配置,极易出现问题,在Eclipse的web项目中,我们可以快速配置,方便快捷 一.导入Hibernate框架所需要的jar文件 二. 窗口—Perspective—打 ...
- php-fpm进程内存泄漏
线上服务器内存报警 线上web8G内存的服务器,内存几乎吃光,top查看,发现php-fpm进程每个都是几十M,php-fpm配置static, 一共150个 解决 排除过程中,其他机器相同配置都没有 ...