/// <summary>
/// 生成缩略图(自动计算宽高)
/// </summary>
/// <param name="originalImagePath">源图路径(物理路径)</param>
/// <param name="thumbnailPath">缩略图保存路径(物理路径)</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
/// <param name="height">是否删除原图</param>
public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height,bool isDeleteoriginalImage)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = width;
int toheight = height;
int x = 0;
int y = 0;
int ow = originalImage.Width; //源图片宽
int oh = originalImage.Height; //源图片高
if (towidth >= ow && toheight >= oh) //如果源图片等于或小于要生成图片的大小,则直接复制
{
File.Copy(originalImagePath, thumbnailPath);
if (isDeleteoriginalImage)
{
File.Delete(originalImagePath);
}
originalImage.Dispose();
return;
}
double wh = towidth / toheight;
double owh = ow / oh;
//按等比宽计算生成图片的宽高
toheight = oh * towidth / ow; //得到按宽等比的高
if (toheight > height) //如果等比的高还是大于生成缩略图的高
{
towidth = towidth * height / toheight;
toheight = height;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(System.Drawing.Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new System.Drawing.Rectangle(0, 0, towidth, toheight),
new System.Drawing.Rectangle(x, y, ow, oh),
System.Drawing.GraphicsUnit.Pixel);
//开始定义打水印
System.Drawing.Font f = new System.Drawing.Font("Verdana", 16);
System.Drawing.Brush b = new System.Drawing.SolidBrush(System.Drawing.Color.Blue);
g.DrawString("点起床啊\r\nsfzdsfdsfdsfsdfdsfdsf111", f, b, 15, 15);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception e)
{
throw e;
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
分享到:
相关推荐
打开为源码,通过运行debug目录下的exe,输入目录再回车,遍历目录下所有大于300k的图片,压缩到小于300k,可以重复压缩同一目录的图片(.net core 3.1),有编码基础的可以根据源码拓展功能,重新编译即可
本文将深入探讨如何使用C#和ASP.NET实现图片的无损压缩,同时保持图片的清晰度最佳。 首先,我们要理解图片压缩的基本原理。图片通常由像素组成,每个像素包含颜色和亮度信息。无损压缩的目标是减小文件大小,而...
本文详细介绍了如何使用C# .Net实现图片压缩,使得压缩后的图片大小仅为原图的1/10。通过对代码的逐行解析,我们不仅学习了如何处理上传的图片数据,还深入理解了图片压缩的具体实现细节。这种技术在实际应用中非常...
本文将详细介绍一个在ASP.NET(使用C#语言)环境下实现的图片压缩类,帮助开发者掌握如何有效地减小图片文件大小而不显著牺牲图像质量。 #### 核心功能:图片压缩方法 该图片压缩类提供了多种压缩图片的方法,包括...
在Asp.net中实现图片压缩,主要涉及到以下几个技术点: 1. **图片处理库**:首先,我们需要一个能够处理图片并进行压缩的库。在.NET Framework中,可以使用System.Drawing namespace中的类,如Bitmap和Image,来...
【图片压缩.net版】是一个基于.NET框架开发的图像处理程序,其主要功能是将图片按照预设的比例进行压缩,同时确保在压缩过程中不发生图像变形和质量失真。这一技术在许多领域都有广泛应用,比如网站优化、社交媒体...
本篇文章将详细探讨如何在.NET环境中实现图片压缩。 首先,我们要了解.NET中处理图像的基本类库——System.Drawing。这个命名空间包含了处理图像所需的各种类,如Image、Bitmap、Graphics等。通过这些类,我们可以...
在C# Core中进行图片处理是一项常见的任务,其中包括图片压缩和剪切操作。无损压缩和剪切技术在保持原始图像质量的同时,可以减小文件大小或改变图像的形状。以下将详细介绍C# Core中如何实现这些功能。 首先,我们...
本文将深入探讨如何使用VB.NET(Visual Basic .NET)来实现内存Stream对JPG图像进行压缩和解压缩。 首先,我们需要了解JPEG(Joint Photographic Experts Group)格式,这是一种广泛用于存储和传输图像的有损压缩...
在图片压缩的上下文中,Flash可以用来在客户端预处理图片,通过内置的图像处理功能对图片进行压缩,降低图片大小,从而减少上传的数据量和服务器的处理压力。然而,由于Flash的安全性和浏览器支持的问题,现代网页...
在提供的压缩包文件".NET实现图片合成经典源码"中,很可能是包含了完成以上步骤的完整C#代码示例。通过学习和理解这些源码,你可以更好地掌握C#在图像处理领域的应用,并能灵活运用到自己的项目中去。如果你遇到任何...
此外,对于图片压缩,可以使用`Image.Save()`方法的第二个参数设置`EncoderParameter`和`Encoder`来调整JPEG质量,从而减小图片大小。例如: ```csharp ImageCodecInfo jpegCodec = ImageCodecInfo....
本文将深入探讨如何使用.NET技术来实现这些功能,并分享一个名为"shexiang"的压缩包文件,它可能包含了示例代码或者工具,供开发者直接运行和学习。 首先,我们要了解.NET中的多媒体库。Microsoft为.NET提供了Media...
### ASP.NET中实现图片滚动知识点解析 #### 一、知识点概览 在ASP.NET中实现图片滚动效果,主要涉及到了HTML、CSS以及JavaScript等技术。本文档将详细解析如何利用这些技术来创建一个动态的图片滚动展示效果。该...
JPEG格式的图片可以调整质量参数来控制压缩级别,而PNG格式则没有质量参数,但可以通过选择不同的压缩算法来优化文件大小。下面是一个示例,展示了如何保存一个JPEG图像并调整质量: ```vbnet Dim originalImage As...
本文将详细探讨如何使用ASP.NET来实现图片压缩,并指定文件目录进行存储。 首先,我们需要了解图片压缩的基本原理。图片压缩通常分为有损压缩和无损压缩。有损压缩如JPEG会牺牲部分图像质量以减小文件大小,而无损...
通过以上步骤,你可以使用VB.NET实现基本的压缩和解压缩功能。然而,实际开发中可能还会遇到如文件夹压缩、多线程处理、错误处理等问题,需要根据具体需求进行深入研究和优化。同时,持续关注.NET Framework的更新,...
总结来说,用C#.NET实现生成PDF文档和将WORD转换为PDF涉及到对PDF结构的理解、使用合适的库进行编程、处理WORD文档的复杂格式以及异常处理。此外,OCR技术在文档转换过程中的应用也是提高效率的关键环节。通过掌握...
综上所述,.NET实现“上传图片并在线截取图片”涉及前端的文件上传、图片预览、截取操作,以及后端的文件接收、裁剪处理和安全控制等多个环节。每个环节都有多种技术和策略可供选择,开发者应根据具体项目需求和技术...
同时,为了提高性能,可以使用多线程上传、分块上传、压缩图片等优化手段。 总的来说,".net批量上传图片带预览功能"这个项目涵盖了.NET Web开发中的文件上传、前端交互和用户体验优化等多个知识点,对于学习和实践...