`

动态生成缩略图

    博客分类:
  • C#
阅读更多
Util.cs 的部分代码:
//// <summary>
/// 创建缩略图
/// </summary>
/// <param name="src">来源页面
/// 可以是相对地址或者绝对地址
/// </param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <returns>字节数组</returns>
public static byte[] MakeThumbnail(string src, double width, double height)
{
    Image image;

    // 相对路径从本机直接读取
    if (src.ToLower().IndexOf("http://") == -1)
    {
        src = HttpContext.Current.Server.MapPath(src);
        image = Image.FromFile(src, true);
    }
    else // 绝对路径从 Http 读取
    {
        HttpWebRequest req = (HttpWebRequest) WebRequest.Create(src);
        req.Method = "GET";
        HttpWebResponse resp = (HttpWebResponse) req.GetResponse();
        Stream receiveStream = resp.GetResponseStream();
        image = Image.FromStream(receiveStream);
        resp.Close();
        receiveStream.Close();
    }
    double newWidth, newHeight;
    if (image.Width > image.Height)
    {
        newWidth = width;
        newHeight = image.Height*(newWidth/image.Width);
    }
    else
    {
        newHeight = height;
        newWidth = (newHeight/image.Height)*image.Width;
    }
    if (newWidth > width)
    {
        newWidth = width;
    }
    if (newHeight > height)
    {
        newHeight = height;
    }
    //取得图片大小
    Size size = new Size((int) newWidth, (int) newHeight);
    //新建一个bmp图片
    Image bitmap = new Bitmap(size.Width, size.Height);
    //新建一个画板
    Graphics g = Graphics.FromImage(bitmap);
    //设置高质量插值法
    g.InterpolationMode = InterpolationMode.High;
    //设置高质量,低速度呈现平滑程度
    g.SmoothingMode = SmoothingMode.HighQuality;
    //清空一下画布
    g.Clear(Color.White);
    //在指定位置画图
    g.DrawImage(image, new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                new Rectangle(0, 0, image.Width, image.Height),
                GraphicsUnit.Pixel);
    ////文字水印
    //System.Drawing.Graphics G=System.Drawing.Graphics.FromImage(bitmap);
    //System.Drawing.Font f=new Font("宋体",10);
    //System.Drawing.Brush b=new SolidBrush(Color.Black);
    //G.DrawString("myohmine",f,b,10,10);
    //G.Dispose();
    ////图片水印
    //System.Drawing.Image copyImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath("pic/1.gif"));
    //Graphics a = Graphics.FromImage(bitmap);
    //a.DrawImage(copyImage, new Rectangle(bitmap.Width-copyImage.Width,bitmap.Height-copyImage.Height,copyImage.Width, copyImage.Height),0,0, copyImage.Width, copyImage.Height, GraphicsUnit.Pixel);
    //copyImage.Dispose();
    //a.Dispose();
    //copyImage.Dispose();
    //保存高清晰度的缩略图
    MemoryStream stream = new MemoryStream();
    bitmap.Save(stream, ImageFormat.Jpeg);
    byte[] buffer = stream.GetBuffer();
    g.Dispose();
    image.Dispose();
    bitmap.Dispose();
    return buffer;
}
分享到:
评论

相关推荐

    asp.net绝对完美的生成缩略图的类(多种模式生成)

    原类生成的缩略图的问题在于:高或者宽可能会大于需求值。比如,我需要的图片宽为150,高为120,当原图 * 高为150,宽为150或差距不大时,生成的图片不会有变化,即也是高150,宽150,这样,当把这些图片显示到网页...

    php动态生成缩略图并输出显示的方法

    在介绍动态生成缩略图的方法之前,我们需要了解一些基础知识。PHP是一门广泛用于Web开发的服务器端脚本语言,它提供了丰富的图像处理函数,可以让我们在服务器端处理图像数据。而缩略图是指根据用户的需求自动生成的...

    动态缩略图实现方案

    总的来说,Java提供了强大的图像处理能力,使得在服务器端动态生成缩略图成为可能。通过熟练掌握Java 2D API和其他相关库,开发者可以构建高效、灵活的动态缩略图系统,满足各种应用场景的需求。

    java 图片生成缩略图

    "java 图片生成缩略图" Java 图片生成缩略图是Java程序开发中一个常见的需求,通过将图片以缩略图形式展示,可以提高用户体验和网站性能。在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 ...

    java 上传图片生成缩略图

    ### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...

    基于Springmvc的上传图片并生成缩略图

    在本文中,我们将深入探讨如何基于Springmvc实现图片上传及生成缩略图的功能。Springmvc是Spring框架的一个重要模块,用于构建MVC模式的Web应用,它提供了强大的数据绑定、模型映射、视图渲染等功能,是Java开发中的...

    生成网页缩略图(输入网址,宽度,高度生成缩略图)

    在生成缩略图之前,首先需要获取网页的源代码。这通常通过HTTP或HTTPS协议实现,使用`GET`请求来请求指定的URL。抓取的源代码包含了HTML、CSS、JavaScript等网页组成元素,是生成缩略图的基础。 2. **渲染引擎**:...

    C#生成缩略图

    利用C#语言生成图片的缩略图,有需要可以参考一下。

    一个批量生成缩略图工具的源代码

    在IT行业中,生成缩略图是一项常见的任务,特别是在图像处理、网页设计以及各种应用程序中。缩略图的主要目的是为了快速预览大图像或一组图像,节省用户的时间和带宽。本压缩包提供了一个批量生成缩略图工具的源代码...

    pdf生成缩略图

    PDF生成缩略图是将PDF文档中的页面转换成小尺寸的图像表示,通常用于预览、索引或在文件管理器中快速查看PDF内容。在IT领域,这涉及到PDF处理和图像处理技术。以下是一些关于如何在C#中生成PDF缩略图的关键知识点: ...

    图片生成缩略图片

    - **客户端生成**:用户端的浏览器可以通过CSS(如`object-fit`属性)或者JavaScript库(如`canvas`元素或第三方库如`sharp`、`thumbnail`等)来动态生成缩略图。这种方法的优点是减轻服务器压力,缺点是用户设备...

    fastdfs+nginx 分布式存储图片,支持动态缩略图

    本主题将详细介绍如何利用FastDFS和Nginx搭建一个分布式图片存储系统,并实现动态生成缩略图的功能。 首先,我们来看FastDFS。FastDFS设计的主要目标是为互联网应用提供高效的文件存储服务,它将文件存储与文件访问...

    C#生成缩略图(图片按比例缩小 空白处用指定颜色填充)

    "C#生成缩略图" C#生成缩略图是指使用C#语言生成图片的缩略图,缩略图是指将原图片按比例缩小,并将空白处用指定颜色填充,并为缩略图加上边框。下面是关于C#生成缩略图的知识点: 1. 图片按比例缩小:在生成缩略...

    Jquery生成缩略图画廓

    在本文中,我们将深入探讨如何使用jQuery来生成缩略图画廊。这个技术广泛应用于网站设计中,以展示图片集合,并允许用户通过点击缩略图查看全尺寸图片。我们将基于提供的标题"Jquery生成缩略图画廓"和描述,讨论如何...

    缩略图生成sample代码

    在生成缩略图时,`RecipeThumbnailProvider`可能需要读取和解析文件内容。这可能涉及到解码图像文件,或者对于非图像文件,如文档或音频,可能需要解析文件结构并提取适合显示的预览数据。 5. **性能优化**: ...

    JS动态让网页生成的产品图片全部生成缩略图

    ### JS动态让网页生成的产品图片全部生成缩略图 #### 背景介绍 在网络应用中,图片处理是一项常见的需求,特别是在电子商务网站上,产品图片的展示效果直接影响用户体验。为了提高加载速度并优化视觉效果,通常需要...

    上传图片并生成高清晰缩略图

    - 通过条件判断决定是基于宽度还是高度来生成缩略图。 6. **保存缩略图:** - 生成缩略图后,将其保存到指定路径下。 - 可以在文件名中加入特定标识符,例如“_thumb”,以便于区分原图和缩略图。 7. **返回...

    html5图片上传本地生成缩略图预览

    在图片预览和缩略图生成中,我们可以利用Canvas的drawImage方法将图片加载到Canvas上,然后通过调整Canvas的宽度和高度来生成缩略图。 3. **Data URL**:Data URL是一种内联资源表示方式,可以直接在页面中嵌入图像...

    C# 批量生成缩略图

    在IT行业中,尤其是在图像处理领域,批量生成缩略图是一项常见的任务。对于C#开发者来说,这个过程可以通过利用.NET Framework中的System.Drawing命名空间来实现。本文将深入探讨如何使用C#进行批量生成缩略图,并...

    jsp上传图片并生成缩略图

    在Java服务器页面(JSP)中,上传图片并生成缩略图是一项常见的需求,尤其在构建网站或Web应用时。这个过程涉及到多个步骤,包括文件上传、图片处理和存储。以下将详细介绍如何实现这一功能。 1. **文件上传**: -...

Global site tag (gtag.js) - Google Analytics