C#图片截取压缩(百分比压缩/大小压缩)实现代码

下面我将为您详细讲解“C#图片截取压缩(百分比压缩/大小压缩)实现代码”的完整攻略。

一、实现思路

图片截取和压缩功能可以通过C#中内置的System.Drawing命名空间的方法来实现。具体实现流程如下:

  1. 读取原始图片文件,创建一个Image对象;
  2. 将Image对象转换为Bitmap对象;
  3. 调用Bitmap对象的Crop方法对图片进行截取,得到截取后的Bitmap对象;
  4. 调用Bitmap对象的GetThumbnailImage方法将图片压缩为指定大小;
  5. 保存压缩后的Bitmap对象,得到最终的图片。

二、代码示例1:百分比压缩

using System.Drawing;

// 图片压缩比例
decimal percent = 0.5m;

// 原始图片文件路径
string inputFilePath = "D:/test/original.jpg";

// 压缩后的图片保存路径
string outputFilePath = "D:/test/output.jpg";

// 读取原始图片文件
Image originalImage = Image.FromFile(inputFilePath);

// 将Image对象转换为Bitmap对象
Bitmap originalBitmap = new Bitmap(originalImage);

// 获取原始图片的大小
int originalWidth = originalBitmap.Width;
int originalHeight = originalBitmap.Height;

// 计算压缩后的图片大小
int newWidth = (int)(originalWidth * percent);
int newHeight = (int)(originalHeight * percent);

// 调用Bitmap对象的Crop方法对图片进行截取
Bitmap croppedBitmap = originalBitmap.Clone(new Rectangle(0, 0, newWidth, newHeight), originalBitmap.PixelFormat);

// 调用Bitmap对象的GetThumbnailImage方法将图片压缩为指定大小
Image compressedImage = croppedBitmap.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);

// 保存压缩后的图片
compressedImage.Save(outputFilePath);

// 释放资源
originalImage.Dispose();
originalBitmap.Dispose();
croppedBitmap.Dispose();
compressedImage.Dispose();

三、代码示例2:大小压缩

using System.Drawing;

// 压缩后的图片宽度
int newWidth = 500;

// 压缩后的图片高度
int newHeight = 500;

// 原始图片文件路径
string inputFilePath = "D:/test/original.jpg";

// 压缩后的图片保存路径
string outputFilePath = "D:/test/output.jpg";

// 读取原始图片文件
Image originalImage = Image.FromFile(inputFilePath);

// 将Image对象转换为Bitmap对象
Bitmap originalBitmap = new Bitmap(originalImage);

// 调用Bitmap对象的GetThumbnailImage方法将图片压缩为指定大小
Image compressedImage = originalBitmap.GetThumbnailImage(newWidth, newHeight, null, IntPtr.Zero);

// 保存压缩后的图片
compressedImage.Save(outputFilePath);

// 释放资源
originalImage.Dispose();
originalBitmap.Dispose();
compressedImage.Dispose();

希望以上代码示例对你有所帮助。如果有任何问题,欢迎留言讨论。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#图片截取压缩(百分比压缩/大小压缩)实现代码 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • 使.NET6在开发时支持IIS

    在 .NET 6 中,可以使用 InProcess Hosting 模型将 ASP.NET Core 应用程序托管在 IIS 中。以下是详细的攻略: 步骤一:安装 .NET 6 SDK 在使用 .NET 6 在 IIS 中托管 ASP.NET Core 应用程序之前,需要安装 .NET 6 SDK。可以从官方网站下载并安装 .NET 6 SDK。 步骤二:创…

    C# 2023年5月17日
    00
  • 基于C#中IDisposable与IEnumerable、IEnumerator的应用

    接下来我将详细讲解基于C#中IDisposable与IEnumerable、IEnumerator的应用,包括它的概念、用处及实际应用等相关知识。 一、IDisposable 在C#中,IDisposable是一个接口,它定义了一种机制,用于释放非托管资源以及可选地释放托管资源。一个类通过实现IDisposable接口,并提供Dispose方法来实现资源的释…

    C# 2023年5月15日
    00
  • ASP.NET Forms身份认证详解

    ASP.NET Forms身份认证是一种常用的身份验证机制,用于验证用户在网站上的身份信息。本文将详细讲解ASP.NET Forms身份认证的完整攻略,包括如何设置、实现以及如何进行验证等方面的内容。 1. ASP.NET Forms身份认证设置 要使用ASP.NET Forms身份认证,需要在Web.config文件中添加以下配置: <configu…

    C# 2023年6月3日
    00
  • jquery中ajax调用json数据的使用说明

    在Web开发中,使用Ajax调用JSON数据是一种常见的任务,它可以帮助开发者动态地加载和更新页面内容。在本攻略中,我们将介绍如何使用jQuery中Ajax调用JSON数据,并提供两个示例来说明其用法。 以下是两个示例,介绍如何使用jQuery中Ajax调用JSON数据: 示例一:使用$.ajax方法调用JSON数据 首先,我们需要引入jQuery库: &l…

    C# 2023年5月15日
    00
  • C#实现销售管理系统

    作为网站的作者,我很荣幸能够为大家讲解如何实现C#的销售管理系统。下面我将详细介绍该系统的实现攻略,希望对大家有所帮助。 1. 系统框架设计 系统框架设计是整个系统开发的基础,设计好系统框架后,才能更好地实现系统的具体功能。在此,我们可以采用三层架构进行设计,分别是数据访问层、业务逻辑层和表示层。具体的,数据访问层主要负责数据的访问、查询和修改;业务逻辑层主…

    C# 2023年6月1日
    00
  • C#中的timer与线程使用

    C#中的timer和线程是常用的多线程编程方式,可以实现定时任务、异步操作等。下面是完整攻略: Timer 1. Timer的使用方法 Timer是一个C#中轻量级的计时器。使用时需要先创建一个Timer对象,传入一个TimerCallback委托作为回调函数,在指定时间间隔后,每次调用回调函数。常用的构造函数有: public Timer(TimerCal…

    C# 2023年6月1日
    00
  • 用powershell开发跨平台动态网页

    powershell 动态 网页 跨平台 asp.net dynamic cross platform powershell 传教士 原创文章。始于 2023-04-03 允许转载,但必须保留名字和出处 —【前言】— 以【vbs,和微软jsript】为核心的asp已经淘汰了。ie11后来都不支持网页内嵌vbs了。asp前后端不分离,jscript非正…

    C# 2023年4月18日
    00
  • C#中的队列Queue与堆栈Stack

    下面是关于C#中的队列Queue与堆栈Stack的完整攻略。 栈和队列是什么? 栈(Stack)是一种有序的数据集合,新添加的或待删除的元素都保存移位顶部,称作栈顶,而现有的元素都在栈底。这种操作叫做LIFO(Last in First Out,后进先出)。栈的应用极为广泛,如比较好的表达中缀表达式、进行函数调用和返回数据等操作。 队列(Queue)是一种有…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部