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#/VB.NET实现创建PDF/UA文件的示例代码

    我们来详细讲解一下“C#/VB.NET实现创建PDF/UA文件的示例代码”的完整攻略。 首先,我们需要了解一些基本的概念。PDF/UA是一种通用的文件格式,用于文档的可靠共享和阅读。PDF/UA文件需要遵循一定的规范和标准,以确保文件的可访问性和实用性。创建PDF/UA文件的过程中,我们需要使用特定的工具和方法,以确保文件的合规性和质量。 以下是创建PDF/…

    C# 2023年5月31日
    00
  • .NET 个人博客系统

    前言 之前通过github学习了一个.net core的博客项目,最近也是完成了博客的备案,完善了一下。该项目是传统的MVC项目,可以进行主题的切换,采用Bootstrap进行前台页面的展示,有配套的后台管理系统,可以解析Markdown文件。 参观地址 ZY知识库可以将个人的意见评论到该文章,我可以采纳采纳。 采用技术 后端:.NET Core ORM:E…

    C# 2023年4月17日
    00
  • winform简单缓存类实例

    下面是关于“winform简单缓存类实例”的完整攻略,包含两个示例。 1. 简单缓存类介绍 在WinForm应用程序中,缓存是一种常见的技术,用于提高应用程序的性能和响应速度。简单缓存类是一种基于内存的缓存技术,可以在应用程序中缓存数据,以便在需要时快速访问。 2. 实现简单缓存类 以下是实现简单缓存类的步骤: 2.1 创建缓存类 可以创建一个名为“Simp…

    C# 2023年5月15日
    00
  • 10本最佳C#编程的书籍推荐

    10本最佳C#编程的书籍推荐攻略 为什么要学习C#编程 C#是一种广泛使用的面向对象编程语言,它最初是由微软开发的,用于开发Windows操作系统。C#的语法结构类似于C++和Java,是一种高效、可靠和安全的编程语言。今天,C#已经成为构建Windows桌面应用程序、Web应用程序和游戏的主要语言之一。学习C#编程可以为您在编写高质量应用程序时提供广泛的工…

    C# 2023年6月1日
    00
  • C#窗体读取EXCEL并存入SQL数据库的方法

    下面我为你详细讲解“C#窗体读取EXCEL并存入SQL数据库的方法”的完整攻略。 一、准备工作 在开始编写代码前,需要先安装以下几个组件: Microsoft.Office.Interop.Excel (用于读取Excel文件); System.Data.SqlClient (用于操作SQL数据库)。 二、读取Excel文件 首先,需要引入Microsoft…

    C# 2023年6月2日
    00
  • C# Winform消息通知系统托盘气泡提示框ToolTip控件

    一、引言 在C# Winform界面开发中,消息通知和提示框往往是必不可少的功能。Winform提供了两种常用的消息通知方式:系统托盘气泡提示和ToolTip控件。本文将详细讲解如何使用这两种控件。 二、系统托盘气泡提示 添加系统托盘图标 在Winform中使用系统托盘气泡提示,首先需要在窗体上添加一个NotifyIcon控件,用于显示图标。添加方法如下: …

    C# 2023年6月7日
    00
  • C#异常处理中try和catch语句及finally语句的用法示例

    以下是“C#异常处理中try和catch语句及finally语句的用法示例”的完整攻略。 1. try和catch语句的用法示例 C#中的try和catch语句用于处理可能出现的异常。当程序执行try语句块时发生异常,程序会立即转到catch语句块,并执行catch语句块的代码。下面是一个try和catch语句的示例: try { int x = 10, y…

    C# 2023年5月15日
    00
  • C# StringBuilder.Append()方法: 将一个字符串追加到 StringBuilder 对象的末尾

    StringBuilder是C#中用来动态生成字符串的类,可以有效地避免字符串拼接等操作因为频繁创建新的字符串对象而造成的性能问题。StringBuilder类有多种方法可以用来操作字符串,其中Append()是最常用的方法之一。 Append()方法的作用 StringBuilder.Append()方法用于在已有字符串的末尾追加新的内容。具体来说,就是将…

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