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

C# jpg缩略图函数代码

    来源: 互联网  发布时间:2014-10-14

    本文导语:  代码如下: /// /// 生成jpg缩略图字节,本人的小软件中需要用到的功能,所以自己做了一个函数,和大家分享 /// 为什么要生成字节而不是文件,这是为了方便后续处理啦^_^ /// /// 原始路径 /// 质量0-100 /// 宽度 /// 高度 /// 模式...

代码如下:

///
/// 生成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();
}
}

/**/
///
/// 保存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;
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java下怎么把BufferedImage转成jpg,关键是如何设置jpg的压缩比。
  • linux 命令 tar -cf example.tar *.jpg 怎样包含子目录中的*.jpg?
  • cat /dev/vieo0 > 1.jpg的问题
  • qt怎么显示jpg图片
  • 用Java如何在有菜单和按钮的情况下显示JPG图形文件,而菜单和按钮仍可见????
  • 如何用脚本把诸如a.bmp ,b.jpg等转换成同名但是后缀不同的
  • JPG图像压缩工具 wxPackJPG
  • JPG的存储格式
  • TIFF转换成JPG格式
  • 一个JPG图片项目需要外包,有人可以做吗?
  • JBuilder的Swing中的Button的icon属性都可以接受什么图形文件类型?我用.jpg好象不行!
  • 上传文件时在弹出框如何指定某类型文件如(*.jpg)
  • 用JAVA的IO怎么实现图形文件(GIF/JPG)的读写,100分奉送!
  • 如何在java下截取桌面图像存为jpg格式?
  • 请问如何建立一个Image对象,并导入gif,jpg,png等格式图片并显示
  • 请问jboss下如何在根路径显示出http://localhost:8080/image.jpg?
  • linux怎么打开bmp.jpg.gif.
  • 如何用程序(C)把jpg文件转换成bmp?
  • linux中标准c如何将XImage对象数据保存到bmp或jpg文件
  • 用Java如何在有菜单和按钮的情况下显示JPG图形文件(要求有垂直和水平的滚动条),而菜单和按钮仍可见????


  • 站内导航:


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

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

    浙ICP备11055608号-3