/// <summary>
/// 生成图片缩略图 指定文件路径生成
/// </summary>
public static void SaveImage(String fullName, string fileName, int w, int h)
{
FileStream fs = new FileStream(fullName, FileMode.Open);
System.Drawing.Image image = System.Drawing.Image.FromStream(fs, true);
fs.Close();
SaveImage(image, fileName, w, h);
} /// <summary>
/// 生成图片缩略图 指定文件流生成
/// </summary>
public static void SaveImage(Stream fs, string fileName, int w, int h)
{
Image image = System.Drawing.Image.FromStream(fs, true);
SaveImage(image, fileName, w, h);
} /// <summary>
/// 生成图片缩略图
/// </summary>
public static void SaveImage(System.Drawing.Image image, string fileName, int w, int h, int high = 90)
{
if (w == 0 && h == 0)
{
w = image.Width;
h = image.Height;
}
else if (w > 0 && h > 0)
{
if (image.Width > image.Height)
{
if (image.Width > w)
{
h = (int)(image.Height * ((decimal)w / image.Width));
}
else
{
h = image.Height;
w = image.Width;
}
}
else
{
if (image.Height > h)
{
w = (int)(image.Width * ((decimal)h / image.Height));
}
else
{
h = image.Height;
w = image.Width;
}
}
}
else if (w > 0)
{
if (image.Width > w)
{
h = (int)(image.Height * ((decimal)w / image.Width));
}
else
{
h = image.Height;
w = image.Width;
}
}
else if (h > 0)
{
if (image.Height > h)
{
w = (int)(image.Width * ((decimal)h / image.Height));
}
else
{
h = image.Height;
w = image.Width;
}
} Bitmap ret = new Bitmap(w, h); using (Graphics g = Graphics.FromImage(ret))
{
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.White, 0, 0, w, h);
g.DrawImage(image, 0, 0, w, h);
EncoderParameters parms = new EncoderParameters();
long[] quality = new long[1];
quality[0] = high;
EncoderParameter parm = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
parms.Param[0] = parm;
ImageCodecInfo[] arr = ImageCodecInfo.GetImageEncoders();
ImageCodecInfo ar = null;
for (int x = 0; x < arr.Length; x++)
{
if (arr[x].FormatDescription.Equals("JPEG"))
{
ar = arr[x];
break;
}
} ret.Save(fileName, ar, parms);
ret.Dispose();
image.Dispose();
}
}

ASP.NET 生成缩略图片类分享的更多相关文章

  1. asp.net生成缩略图

    /// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...

  2. ASP.NET生成缩略图的代码

    01.        // <summary> 02.        /// 生成缩略图 03.        /// </summary> 04.        /// &l ...

  3. asp.net生成缩略图、文字图片水印

    /// <summary> /// 会产生graphics异常的PixelFormat /// </summary> private static PixelFormat[] ...

  4. [GDI+] 生成缩略图的类文件SmallImage (转载)

    直接看代码吧,大家可以直接复制使用 /// <summary> /// 类说明:SmallImage类, /// 编码日期:2012-08-20 /// 编 码 人: 苏飞 /// 联系方 ...

  5. 【PHP缩略图类】手机照片不能生成缩略图问题以及解决方式

    [本文原创,谢绝转载] 一.出现的问题 这几天做了手机上传照片并裁出缩略图的接口的測试,发现无论怎么.生成的缩略图都是一片漆黑.:-( 然后就把这个缩略图类单拿出来进行測试,发现仅仅要是手机拍出来的照 ...

  6. asp.net中生成缩略图并添加版权实例代码

    这篇文章介绍了asp.net中生成缩略图并添加版权实例代码,有需要的朋友可以参考一下 复制代码代码如下: //定义image类的对象 Drawing.Image image,newimage; //图 ...

  7. ASP组件AspJpeg(加水印)生成缩略图等使用方法

    ASP组件AspJpeg(加水印)生成缩略图等使用方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-12-17我要评论 ASPJPEG是一款功能相当强大的图象处理组件,用它可以轻松地做出 ...

  8. php 图片操作类,支持生成缩略图,添加水印,上传缩略图

    <?php class Image {     //类开始     public $originimage = ""; //源图片文件地址     public $image ...

  9. PHP生成缩略图的一个方法类(转)

    //使用如下类就可以生成图片缩略图 class resizeimage { //图片类型 var $type; //实际宽度 var $width; //实际高度 var $height; //改变后 ...

随机推荐

  1. jQuery的删除的三种方法remove(),detach(),empty()

    remove()方法是从DOM中删除所有匹配的元素,包括匹配元素的子元素.但是他会有一个返回值, 返回值是一个指向已被删除的节点的引用,所以说,remove删除的元素,还可以再回收利用. var $l ...

  2. 【BZOJ】1057 [ZJOI2007]棋盘制作(悬线法)

    题目 传送门:QWQ 分析 先把题目给出的矩阵变换一下,如果$ a[i][j] $中$ i+j \mod 2 = 1 $那么就对$ a[i][j] $取一下反. 接着就是求原图中最大的0.1子矩阵 详 ...

  3. win10 svn commit无响应

    只是发现其中的一个原因,发现.cs代码文件图标变红了,默认是用Code Writer打开,和SVN可能是冲突了,解决方式是用Code Writer打开一下.cs文件就可以了,原因可能是不打开一次Cod ...

  4. ubuntu sudo apt-get update与sudo apt-get upgrade的作用及区别,以及python pip的安装

    在UBUNTU下,我们维护一个源列表,源列表里面都是一些网址信息,这每一条网址就是一个源,这个地址指向的数据标识着这台源服务器上有哪些软件可以安装使用.编辑源命令: sudo gedit /etc/a ...

  5. urllib2的GET和POST请求(五)

    urllib2默认只支持HTTP/HTTPS的GET和POST方法 urllib.urlencode() urllib 和 urllib2 都是接受URL请求的相关模块,但是提供了不同的功能.两个最显 ...

  6. C# 查找其他应用程序并打开、显示、隐藏、关闭

    软件开发中,有时迫不得已要用到第三方的软件,这时就涉及到在C#应用程序需要对第三方软件打开.显示.隐藏以及关闭. 下面列举了几个常用的方式 打开应用程序,下面是2种简单用法: 第一种: public ...

  7. 一次点击两次触发addEventListener

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. $(function(){})理解

    $(function(){})  =  jQuery(function(){}) = jQuery(document).ready(function(){ });

  9. 分享 - 普通程序员如何转向AI方向

    原作者:计算机的潜意识 原文链接,内容稍有改动,侵删 1. 目的2. AI领域简介3. 学习方法4. 学习路线 0) 领域了解1) 知识准备2) 机器学习3) 实践做项目4) 深度学习5) 继续机器学 ...

  10. Unix高级编程Note3

    [Unix高级编程Note3] 1.RECURSIVE锁可以递归,普通锁只会死锁 2.线程安全函数 3.线程私有数据 4.pthread_once 5.线程取消点 6.线程信号 7.pread 8.d ...