使用c#生成高品质小空间的缩略图
下面是完成这项工作的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.IO;
namespace ConsoleApplication3_ThumbnailImg
{
class Program
{
const int HEIGHT = 190;
const int WIDTH = 190;
static void Main(string[] args)
{
string srcImgPath = @"G:\photoes\20060725\Picture 057.jpg";
string targetFolder = @"E:\Diary\Test\thumbnail";
SetThumbnail_1(srcImgPath, targetFolder);
SetThumbnail_2(srcImgPath, targetFolder);
SetThumbnail_3(srcImgPath, targetFolder);
Console.Read();
}
static void SetThumbnail_1(string srcImgPath, string targetFolder)
{
using (Bitmap source = new Bitmap(srcImgPath))
{
// return the source image if it's smaller than the designated thumbnail
int wi, hi;
wi = WIDTH;
hi = HEIGHT;
// maintain the aspect ratio despite the thumbnail size parameters
if (source.Width > source.Height)
{
wi = WIDTH;
hi = (int)(source.Height * ((decimal)WIDTH / source.Width));
}
else
{
hi = HEIGHT;
wi = (int)(source.Width * ((decimal)HEIGHT / source.Height));
}
using (Image thumb = source.GetThumbnailImage(wi, hi, null, IntPtr.Zero))
{
string targetPath = Path.Combine(targetFolder, "th_1.jpg");
thumb.Save(targetPath);
}
}
}
static void SetThumbnail_2(string srcImgPath, string targetFolder)
{
using (Bitmap source = new Bitmap(srcImgPath))
{
// return the source image if it's smaller than the designated thumbnail
int wi, hi;
wi = WIDTH;
hi = HEIGHT;
// maintain the aspect ratio despite the thumbnail size parameters
if (source.Width > source.Height)
{
wi = WIDTH;
hi = (int)(source.Height * ((decimal)WIDTH / source.Width));
}
else
{
hi = HEIGHT;
wi = (int)(source.Width * ((decimal)HEIGHT / source.Height));
}
// original code that creates lousy thumbnails
// System.Drawing.Image ret = source.GetThumbnailImage(wi,hi,null,IntPtr.Zero);
using (System.Drawing.Bitmap thumb = new Bitmap(wi, hi))
{
using (Graphics g = Graphics.FromImage(thumb))
{
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.White, 0, 0, wi, hi);
g.DrawImage(source, 0, 0, wi, hi);
}
string targetPath = Path.Combine(targetFolder, "th_2.jpg");
thumb.Save(targetPath);
}
}
}
static void SetThumbnail_3(string srcImgPath, string targetFolder)
{
//Configure JPEG Compression Engine
System.Drawing.Imaging.EncoderParameters encoderParams = new System.Drawing.Imaging.EncoderParameters();
long[] quality = new long[1];
quality[0] = 75;
System.Drawing.Imaging.EncoderParameter encoderParam = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
encoderParams.Param[0] = encoderParam;
System.Drawing.Imaging.ImageCodecInfo[] arrayICI = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
System.Drawing.Imaging.ImageCodecInfo jpegICI = null;
for (int x = 0; x < arrayICI.Length; x++)
{
if (arrayICI[x].FormatDescription.Equals("JPEG"))
{
jpegICI = arrayICI[x];
break;
}
}
using (Bitmap source = new Bitmap(srcImgPath))
{
int wi, hi;
wi = WIDTH;
hi = HEIGHT;
// maintain the aspect ratio despite the thumbnail size parameters
if (source.Width > source.Height)
{
wi = WIDTH;
hi = (int)(source.Height * ((decimal)WIDTH / source.Width));
}
else
{
hi = HEIGHT;
wi = (int)(source.Width * ((decimal)HEIGHT / source.Height));
}
// original code that creates lousy thumbnails
// System.Drawing.Image ret = source.GetThumbnailImage(wi,hi,null,IntPtr.Zero);
using (System.Drawing.Bitmap thumb = new Bitmap(wi, hi))
{
using (Graphics g = Graphics.FromImage(thumb))
{
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.White, 0, 0, wi, hi);
g.DrawImage(source, 0, 0, wi, hi);
}
string targetPath = Path.Combine(targetFolder, "th_3.jpg");
thumb.Save(targetPath, jpegICI, encoderParams);
}
}
}
}
}
使用c#生成高品质小空间的缩略图相关推荐
- [日推荐] 『KORJO母爱小空间』妈妈带宝宝出门再也不用愁啦!
2019独角兽企业重金招聘Python工程师标准>>> 对于哺乳期妈妈们来说,带宝宝出门最大的问题就是哺乳和换尿布,虽然现在很多商场都配置了母婴室,但是走在路上,如果宝宝突然哭闹起来 ...
- 免费生成微信小程序的经验
为了做小程序,我试过自己开发,也用过市面上的可以免费一键生成小程序的平台.对于新手来说还是有蛮多需要注意的地方,为避免大家走弯路,就跟大家分享一下我的一些关于免费生成微信小程序的经验. 1.小程序到底 ...
- 运用家居收纳储物空间 小空间变出大身材
现代户型都不是太大,但大家的东西却是越来越多的.如何利用小空间,变出大收纳,是一个非常有趣的话题. 家中空间紧张,储物空间不够,别急,空间就像海绵里的水,只要你愿意挤总是会有的. 1.墙角设伸缩杆 角 ...
- 高品质静物空间海报模板PSD分层素材
高品质静物空间海报模板PSD分层素材 在自然优雅光线的室内空间环境中展示您的摄影绘画作品,为您的工作增添更多氛围的好方 法. 非常适合作为创作背景和艺术绘画素材 (PSD文件)易于使用智能对象进行编辑 ...
- 上传txt生成字典 java_文件上传漏洞fuzz字典生成脚本小工具分享
前言 学习xss的时候翻阅资料发现了一个文件上传漏洞fuzz字典生成脚本小工具,试了试还不错,分享一下 配置 需要python2环境 使用方法 $ python upload-fuzz-dic-bui ...
- 把个人网站封装生成百度小程序的方法分享
现在百度大力发展移动端,所以百度智能小程序有一定的流量优势,还可以进入信息流和贴吧推广,同时还能获得网站快速收录权限,昨天已封装成功,今天跟大家分享把个人网站封装生成百度小程序的方法. 一.生成小程序 ...
- 全新圣诞节头像框制作生成微信小程序源码下载支持多模板
一款可以制作圣诞帽头像的一款小程序 里面有多种模板选择,当然啦里面不只是可以制作圣诞帽 还可以制作贴图头像框,各种卡通,卡哇伊,男神女神标等等模板可以制作的 另外还支持检测你的手机型号,自动辨别手机真 ...
- 【有手就会系列】四步通过文字生成二次元小姐姐图片
首先fork项目,启动环境选择16G的A100显卡,直接点击运行加载模型,接着就到了生成小姐姐的时候啦 你需要设置想生成的小姐姐的描述,由于模型是通过英文训练的,所以建议中文翻译成英文输入,填入你想要 ...
- 开发微信小程序,就是这么简单!可自动生成微信小程序源代码,配套JS SDK、接口和后台
开发微信小程序,就是这么简单!自己动手,丰衣足食! 开发微信小程序有多简单? 你只需要掌握前端开发,就可以轻松开发自己的微信小程序,实现自己的业务功能.借助果创云,无须域名.无须服务器.无须数据库, ...
最新文章
- 如何升级jdk_简述面试常见问题的锁升级与锁优化
- 会计电算化之Excel
- java common io_Java之Apache Commons-IO使用精讲
- 三心二意,助你好运?
- JS设置文本框只能是数字和小数点。
- markdown 转义字符
- syncthing下载_Syncthing中继服务器和发现服务器
- java中一个数轮流除去所有数_Java实现A、B两人轮流从盒中取球,取出球的数目必须是:1,3,7或者8个...
- nagios 监控memcached
- javascript 闭包理解总结
- 计算机硬盘被配制成动态磁盘。在这种情况下无法进行重装?,动态磁盘转换为基本磁盘(完美解决方案)...
- SEO实战密码:60天网站流量提高20倍(第2版)
- 目标检测中的常见指标
- CentOS 8 安装tc流量控制工具
- linux 符号执行,[原创]符号执行Symcc与模糊测试AFL结合实践
- C++——动态空间分配
- 2015阿里实习生面试
- 通报批评!985博导把审稿的文章拒了后当成自己的文章投!国家自然科学基金委通报批评...
- wxPython 2 - wxPython基础
- CV领域Transformer这一篇就够了(原理详解+pytorch代码复现)
热门文章
- java mongodb存base64_阿里JAVA面试分享经验【文末有福利】
- Ant Design 入门-引用自己命名的组件
- 2-Runtime objc_object objc_class
- 使用Powershell批量为Azure资源添加Tags
- 深度分析Java的枚举类型——枚举的线程安全性及序列化问题
- 使用CNN做文本分类——将图像2维卷积换成1维
- 友盟数据—值得手游创业者关注的玩家数据
- xp/2003开关3389指令
- UML部署图(转载)
- 语言模型自然语言处理[置顶] 哥伦比亚大学 自然语言处理 公开课 授课讲稿 翻译(四)...