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;
}
分享到:
相关推荐
原类生成的缩略图的问题在于:高或者宽可能会大于需求值。比如,我需要的图片宽为150,高为120,当原图 * 高为150,宽为150或差距不大时,生成的图片不会有变化,即也是高150,宽150,这样,当把这些图片显示到网页...
在介绍动态生成缩略图的方法之前,我们需要了解一些基础知识。PHP是一门广泛用于Web开发的服务器端脚本语言,它提供了丰富的图像处理函数,可以让我们在服务器端处理图像数据。而缩略图是指根据用户的需求自动生成的...
总的来说,Java提供了强大的图像处理能力,使得在服务器端动态生成缩略图成为可能。通过熟练掌握Java 2D API和其他相关库,开发者可以构建高效、灵活的动态缩略图系统,满足各种应用场景的需求。
"java 图片生成缩略图" Java 图片生成缩略图是Java程序开发中一个常见的需求,通过将图片以缩略图形式展示,可以提高用户体验和网站性能。在本文中,我们将介绍使用Java生成缩略图的方法。 缩略图生成方法 在 ...
### Java 上传图片生成缩略图的知识点解析 在现代Web开发中,处理图像是一项常见的需求,尤其是在涉及用户上传图片的应用场景中。本篇文章将基于提供的代码片段详细讲解如何使用Java来实现上传图片并自动生成缩略图...
在本文中,我们将深入探讨如何基于Springmvc实现图片上传及生成缩略图的功能。Springmvc是Spring框架的一个重要模块,用于构建MVC模式的Web应用,它提供了强大的数据绑定、模型映射、视图渲染等功能,是Java开发中的...
在生成缩略图之前,首先需要获取网页的源代码。这通常通过HTTP或HTTPS协议实现,使用`GET`请求来请求指定的URL。抓取的源代码包含了HTML、CSS、JavaScript等网页组成元素,是生成缩略图的基础。 2. **渲染引擎**:...
利用C#语言生成图片的缩略图,有需要可以参考一下。
在IT行业中,生成缩略图是一项常见的任务,特别是在图像处理、网页设计以及各种应用程序中。缩略图的主要目的是为了快速预览大图像或一组图像,节省用户的时间和带宽。本压缩包提供了一个批量生成缩略图工具的源代码...
PDF生成缩略图是将PDF文档中的页面转换成小尺寸的图像表示,通常用于预览、索引或在文件管理器中快速查看PDF内容。在IT领域,这涉及到PDF处理和图像处理技术。以下是一些关于如何在C#中生成PDF缩略图的关键知识点: ...
- **客户端生成**:用户端的浏览器可以通过CSS(如`object-fit`属性)或者JavaScript库(如`canvas`元素或第三方库如`sharp`、`thumbnail`等)来动态生成缩略图。这种方法的优点是减轻服务器压力,缺点是用户设备...
本主题将详细介绍如何利用FastDFS和Nginx搭建一个分布式图片存储系统,并实现动态生成缩略图的功能。 首先,我们来看FastDFS。FastDFS设计的主要目标是为互联网应用提供高效的文件存储服务,它将文件存储与文件访问...
"C#生成缩略图" C#生成缩略图是指使用C#语言生成图片的缩略图,缩略图是指将原图片按比例缩小,并将空白处用指定颜色填充,并为缩略图加上边框。下面是关于C#生成缩略图的知识点: 1. 图片按比例缩小:在生成缩略...
在本文中,我们将深入探讨如何使用jQuery来生成缩略图画廊。这个技术广泛应用于网站设计中,以展示图片集合,并允许用户通过点击缩略图查看全尺寸图片。我们将基于提供的标题"Jquery生成缩略图画廓"和描述,讨论如何...
在生成缩略图时,`RecipeThumbnailProvider`可能需要读取和解析文件内容。这可能涉及到解码图像文件,或者对于非图像文件,如文档或音频,可能需要解析文件结构并提取适合显示的预览数据。 5. **性能优化**: ...
### JS动态让网页生成的产品图片全部生成缩略图 #### 背景介绍 在网络应用中,图片处理是一项常见的需求,特别是在电子商务网站上,产品图片的展示效果直接影响用户体验。为了提高加载速度并优化视觉效果,通常需要...
- 通过条件判断决定是基于宽度还是高度来生成缩略图。 6. **保存缩略图:** - 生成缩略图后,将其保存到指定路径下。 - 可以在文件名中加入特定标识符,例如“_thumb”,以便于区分原图和缩略图。 7. **返回...
在图片预览和缩略图生成中,我们可以利用Canvas的drawImage方法将图片加载到Canvas上,然后通过调整Canvas的宽度和高度来生成缩略图。 3. **Data URL**:Data URL是一种内联资源表示方式,可以直接在页面中嵌入图像...
在IT行业中,尤其是在图像处理领域,批量生成缩略图是一项常见的任务。对于C#开发者来说,这个过程可以通过利用.NET Framework中的System.Drawing命名空间来实现。本文将深入探讨如何使用C#进行批量生成缩略图,并...
在Java服务器页面(JSP)中,上传图片并生成缩略图是一项常见的需求,尤其在构建网站或Web应用时。这个过程涉及到多个步骤,包括文件上传、图片处理和存储。以下将详细介绍如何实现这一功能。 1. **文件上传**: -...