当前位置:  编程技术>.net/c#/asp.net

c#实现的jpg缩略图函数

    来源: 互联网  发布时间:2014-08-30

    本文导语:  本节内容: 分享一个c#实现JPG缩略图的实例代码。 例子:   代码示例: /// /// 生成jpg缩略图字节 /// /// 原始路径 /// 质量0-100 /// 宽度 /// 高度 /// 模式:HW,W,H,Cut /// public static byte[] MakeJPGThumbnailBytes(string originalImagePath, l...

本节内容:
分享一个c#实现JPG缩略图的实例代码。

例子:
 

代码示例:
///
/// 生成jpg缩略图字节
///
/// 原始路径
/// 质量0-100
/// 宽度
/// 高度
/// 模式:HW,W,H,Cut
///
public static byte[] MakeJPGThumbnailBytes(string originalImagePath, long quality, int width, int height, string mode)
{
Image originalImage = Image.FromFile(originalImagePath);
MemoryStream s = new MemoryStream();
int towidth = width;
int toheight = height;
 
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
 
switch (mode)
{
case "HW"://指定高宽缩放(可能变形)
break;
case "W"://指定宽,高按比例
toheight = originalImage.Height * width / originalImage.Width;
break;
case "H"://指定高,宽按比例
towidth = originalImage.Width * height / originalImage.Height;
break;
case "Cut"://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * height / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default:
break;
}
 
//新建一个bmp图片
Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
 
//新建一个画板
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
 
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
 
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
 
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
 
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(x, y, ow, oh),
GraphicsUnit.Pixel);
 
try
{
//以jpg格式保存缩略图
EncoderParameters eps = new EncoderParameters(1);
EncoderParameter ep = new EncoderParameter(Encoder.Quality,quality);
eps.Param[0] = ep;
bitmap.Save(s, GetCodecInfo("image/jpeg"), eps);
return s.GetBuffer();
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
s.Dispose();
g.Dispose();
} www.
}
 
/**/
///
/// 保存JPG时用
///
///
/// 得到指定mimeType的ImageCodecInfo
private static ImageCodecInfo GetCodecInfo(string mimeType)
{
ImageCodecInfo[] CodecInfo = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo ici in CodecInfo)
{
if (ici.MimeType == mimeType) return ici;
}
return null;
}

    
 
 

您可能感兴趣的文章:

  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • C#实现获取枚举中元素个数的方法
  • C#实现自定义双击事件
  • C#键盘输入回车键实现点击按钮效果的方法
  • C#实现获取一年中是第几个星期的方法
  • C#实现Datatable排序的方法
  • C#实现装箱与拆箱操作简单实例
  • 解决C#中WebBrowser的DocumentCompleted事件不执行的实现方法
  • C#下实现创建和删除目录的实例代码
  • 使用C#实现在屏幕上画图效果的代码实例
  • C#实现过滤html标签并保留a标签的方法
  • c#实现TextBox只允许输入数字
  • C# Winform 整个窗口拖动的实现代码
  • c# ListView实现双击Item事件的变通方法
  • C#实现随鼠标移动窗体实例
  • C#中的FileUpload 选择后的预览效果具体实现
  • C# 窗体隐藏及任务管理器中禁止关闭的实现代码
  • C#的锯齿数组以及C++实现代码
  • C#格式化文件大小的实现代码
  • C#怎样才能实现窗体最小化到托盘呢?
  • C# char类型字符转换大小写的实现代码
  • Jquery 动态实现图片缩略的代码
  • PHP实现生成透明背景的PNG缩略图函数分享
  • c#生成缩略图的实现方法
  • 使用gd库实现php服务端图片裁剪和生成缩略图功能分享
  • php gd库实现服务端图片裁剪与缩略图
  • php生成缩略图示例代码分享(使用gd库实现)
  • php实现上传图片生成缩略图示例
  • 用java实现的获取优酷等视频缩略图的实现代码
  • Codeigniter实现多文件上传并创建多个缩略图
  • Codeigniter多文件上传与缩略图实现代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 谁帮我看一下下面几个实现函数需要实现要用到什么函数?在线等待,必给分!
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • 标准C下没有字符处理函数,怎样写一个实现下面功能的函数?
  • Linux下C语言strstr()查找子字符串位置函数详细介绍(strstr原型、实现及用法)
  • EJB QL都支持什么函数啊?能不能支持trim函数呢?如果不能,应该怎么实现这样的功能呢?
  • php通过pack和unpack函数实现对二进制数据封装及解析
  • sendfile()函数为什么效率高? 它的实现难道没有涉及普通I/O函数么
  • Linux有定时器函数吗?是不是要自己实现?如果有的话是什么函数呢?谢谢
  • 自己实现strcpy函数的实现方法
  • C语言应用程序使用的函数来源于libc库, Libc库中的函数是在哪里实现的??
  • 高手帮帮忙!vi中如何实现跳转到任意结构体或函数的声明处,包括系统库中声明的函数和数据结构?
  • 如何实现Java下的回调函数!
  • 怎样从Linux源文件中找到函数实现方式?
  • 关于内核里实现的函数
  • 可不可以在程序中直接使用ftp客户端的函数实现文件传输?
  • 整型数据做函数的参数,怎样实现传地址,和调用程序共用一个地址?
  • 请问如何查看libX11.so中的函数实现
  • 菜鸟问题:linux各个函数的实现源代码在哪?
  • javascript开源软件 iis7站长之家
  • 请问,pipe()这个管道建立函数在哪里实现的?
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • socket实现多文件并发传输,求助多线程实现问题?
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • interface 到底有什么用???实现接口,怎么实现??
  • 通过javascript库JQuery实现页面跳转功能代码
  • 怎么用Jsp实现在页面实现树型结构?
  • php实现socket实现客户端和服务端数据通信源代码
  • windows 下的PortTunnel 在linux下怎么实现?或者相应的已经实现的软件?端口映射
  • flash AS3反射实现(describeType和getDefinitionByName)
  • 网站重定向用C语言实现iptables,ACL实现


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3