/// <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# 创建缩略图的更多相关文章

  1. PHP 创建缩略图

    一.成比例缩小图像 <?php /* 创建缩略图 */ $file = __DIR__.'/button.png'; $scale = 0.5; // 比例 $image = ImageCrea ...

  2. php 使用GD库上传图片以及创建缩略图

    php 使用GD库上传图片以及创建缩略图   GD库是PHP进行图象操作一个很强大的库. 先在php.ini里增加一行引用:extension=php_gd2.dll 重启apache.做一个测试页 ...

  3. 使用GDI+轻松创建缩略图

    Gdi+ 还是相当好用的. 1> Image保存图像,需要一个CLSID的参数,它可以这样获得: int   GetEncoderClsid(const   WCHAR*   format,   ...

  4. Win+PHP+IECapt完整实现网页批量截图并创建缩略图

    最近在开发一个本地互联网应用的项目,为了增加用户体验,需要在搜索结果左侧显示如图一所示的某个网站的缩略图效果,在网上不停地百度谷歌了一上午后,发现大多数实现少量截图还是可以的,如果大批量的截图总会在中 ...

  5. JavaScript with Image:创建缩略图

    当图片很大,直接把图片从Server下载到浏览器上看是一种很不明智的做法,浪费了服务器的资源,网络带宽和客户端的资源.所以,通常Server和Client之间会传输缩略图,只有当Client请求某张图 ...

  6. python创建缩略图和选择轮廓效果

    # -*- encoding:utf-8 -*- ''' 改变颜色 --- 颜色反转''' from PIL import Image nest = Image.open("D:\\tk.j ...

  7. 使用 Amazon S3 触发器创建缩略图

    使用 Amazon S3 触发器创建缩略图 环境 centos (注意,必须是Linux环境) node12.x 安装教程 curl -sL https://rpm.nodesource.com/se ...

  8. scrapy下载图片到自己的目录,创建缩略图,存储入库

    环境和工具:python2.7,scrapy 实验网站:http://www.27270.com/tag/333.html  爬去所有兔女郎图片,下面的推荐需要过滤 逻辑:分析网站信息,下载图片和入库 ...

  9. JS创建缩略图

    <script language="javascript"> //显示缩略图 function DrawImage(ImgD,width_s,height_s){ /* ...

随机推荐

  1. css属性background

    一.background-size 1.具体设定的px值,及北背景图片的具体宽高 2.设定的百分比,相对于容器的宽高 3.设定三个铺设类型: (1)cover: 以宽 / 高 为基本,尽可能的去铺满整 ...

  2. Vim 标签定义

    一.单个文件: m+标记字符 打上标记,如在开头行按ms(start),标记开头: 如需返回到自己的标记点,按`+标记字符就行: 二.多个文件: m+大写标记字符 如果删除了标签的行,同时也删除了标签 ...

  3. Idea中配置Tomcat7的JNDI

    1.进入目录 D:\apache-tomcat-7.0.73\conf\Catalina\localhost 添加hello.xml ,内容为: <Context path="/hel ...

  4. 算法(Algorithms)第4版 练习 1.5.23

    package com.qiusongde; import edu.princeton.cs.algs4.StdOut; public class Exercise1523 { public stat ...

  5. 启动Hive时报错

    报错信息如下 Logging initialized -bin/lib/hive-common-.jar!/hive-log4j.properties Exception in thread &quo ...

  6. python爬取某个网站的图片并保存到本地

    python爬取某个网站的图片并保存到本地 #coding:utf- import urllib import re import sys reload(sys) sys.setdefaultenco ...

  7. java:Maven构建项目速度太慢的解决办法,以及报错Retrieving archetypes:' has encountered a problem

    如果报错信息如下: Retrieving archetypes:' has encountered a problemAn internal error occurred during:"R ...

  8. Python基础-列表推导式

    python中列表推导式有三种数据类型可用:列表,字典,集合 列表推导式书写形式: [表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件] 1,列表推导式 ...

  9. FileInputStream 原理总结 把文件作为字节流进行读操作

    package io; import java.io.FileInputStream; import java.io.IOException; public class IOUtil { /** * ...

  10. tensorflow CUDA 9.0安装成功

    berli@berli-dev:~/tensorflow$ bazel-bin/tensorflow/examples/label_image/label_image 2017-12-18 00:04 ...