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日

相关文章

  • C#特性-对象集合初始化器介绍

    C#特性-对象集合初始化器是一种简化代码编写的特性,可以快速且易于阅读地创建和初始化对象和集合。下面我们来详细讲解它的使用方法: 1. 对象初始化器 在使用对象初始化器的时候,可以直接在创建对象的同时,对其字段和属性进行赋值。下面是一个示例: public class Person { public string Name { get; set; } pub…

    C# 2023年6月1日
    00
  • C#中的委托Delegate

    当我们需要在程序运行时动态指定一个方法时,委托(Delegate)是一个非常方便的工具。C#的委托类似于Java或C++中的函数指针,它可以指向一个或一组指定方法的引用。委托可以用来封装函数,以便在其他函数中调用此函数。 委托的定义 在C#中,使用delegate关键字来定义委托类型。委托类型实质上是一种类,它包含指向方法的引用。定义语法如下: access…

    C# 2023年6月7日
    00
  • ASP.NET Core Api网关Ocelot的使用初探

    下面是“ASP.NET Core Api网关Ocelot的使用初探”的完整攻略: 什么是ASP.NET Core Api网关Ocelot? ASP.NET Core Api网关Ocelot是一个开源的API网关,用于管理和路由HTTP请求。它提供了一组API和UI组件,用于配置和管理API网关,包括路由、认证、授权、限流、缓存等方面。 如何使用ASP.NET…

    C# 2023年5月16日
    00
  • C#异步编程的三种模式

    当我们使用 C# 开发异步程序时,常会用到异步编程模式(Asynchronous Programming Pattern, APM),任务并行库(Task Parallel Library, TPL)和异步方法(Asynchronous methods)。下面将对这三种 C# 异步编程模式进行详细讲解。 异步编程模式 (APM) 异步编程模式是 C# 中最古…

    C# 2023年6月3日
    00
  • C#中的局部变量冲突问题

    C#中的局部变量冲突问题,是指在同一个方法(函数)中定义了相同名字的局部变量,这样就会出现变量冲突的问题。在程序执行时,可能会出现不可预期的结果,甚至导致应用程序崩溃。 下面是防止C#局部变量冲突问题的几个方法: 1.使用不同的变量名 最简单的方式是使用不同的变量名,为每个变量设置一个唯一的名称,以避免变量之间的冲突。 public void Test() …

    C# 2023年5月14日
    00
  • C#对文件/文件夹操作代码汇总

    关于”C#对文件/文件夹操作代码汇总”的攻略,主要包含以下内容: 1.文件夹操作 创建文件夹 使用System.IO.Directory 类的CreateDirectory()方法可以创建一个新的文件夹。代码实例: string path = @"C:\MyDirectory"; if (!Directory.Exists(path)) …

    C# 2023年5月15日
    00
  • 解析C#中不一样的大小写转换

    针对“解析C#中不一样的大小写转换”这一话题,我来给出一份完整攻略。 什么是大小写转换 大小写转换是指将一个字符串中的所有字母(或指定位置的字母)由一个状态(大写或小写)转成另一个状态(小写或大写)的操作。在 C# 中,字符串大小写转换一般用于进行字符串比较,或者对输出结果进行格式化等操作。 C# 中的大小写转换 C# 中提供了多种方法用于字符串大小写转换。…

    C# 2023年6月7日
    00
  • ASP.NET Core实现中间件的几种方式

    ASP.NET Core 实现中间件的几种方式 ASP.NET Core 是一个跨平台的开源框架,它提供了多种实现中间件的方式。下面是详细的攻略: 步骤1:创建 ASP.NET Core 项目 在 Visual Studio 中创建名为“MiddlewareDemo”的 Core 项目。 步骤2:使用 Use 方法添加中间件 在 Startup.cs 文件中…

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