c#图片缩放图片剪切功能实现(等比缩放)

C#图片缩放图片剪切功能实现(等比缩放)

在C#中,实现缩放和剪切图片是很常见的需求。本文将介绍如何使用C#实现等比缩放图片,并提供两个示例说明。

1. 等比缩放图片

1.1 引用命名空间

using System.Drawing;
using System.Drawing.Imaging;

1.2 创建一个函数

public static void ZoomImage(string fileName, int width, int height)
{
    using (Image img = Image.FromFile(fileName))
    {
        int sourceWidth = img.Width;      // 原始图像的宽度
        int sourceHeight = img.Height;    // 原始图像的高度

        float scale = Math.Min((float)width / sourceWidth, (float)height / sourceHeight); // 计算缩放比例

        int destWidth = (int)(sourceWidth * scale);    // 计算缩放后的图像宽度
        int destHeight = (int)(sourceHeight * scale);  // 计算缩放后的图像高度

        Bitmap bitmap = new Bitmap(destWidth, destHeight); // 创建缩放后的位图对象

        using (Graphics graphics = Graphics.FromImage(bitmap))
        {
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;  // 图像质量设置为最高
            graphics.DrawImage(img, new Rectangle(0, 0, destWidth, destHeight), new Rectangle(0, 0, sourceWidth, sourceHeight), GraphicsUnit.Pixel); // 绘制缩放后的位图对象
        }

        bitmap.Save(Path.Combine(Path.GetDirectoryName(fileName), "zoom_" + Path.GetFileName(fileName)), ImageFormat.Jpeg); // 保存缩放后的位图对象
    }
}

1.3 调用函数

ZoomImage("test.jpg", 100, 100); // 缩放test.jpg后的大小为100x100

2. 图片剪切功能实现

2.1 引用命名空间

using System.Drawing;
using System.Drawing.Imaging;

2.2 创建一个函数

public static void CropImage(string fileName, int x, int y, int width, int height)
{
    using (Image img = Image.FromFile(fileName))
    {
        Bitmap bitmap = new Bitmap(width, height); // 创建剪切后的位图对象

        using (Graphics graphics = Graphics.FromImage(bitmap))
        {
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;  // 图像质量设置为最高
            graphics.DrawImage(img, new Rectangle(0, 0, width, height), new Rectangle(x, y, width, height), GraphicsUnit.Pixel); // 绘制剪切后的位图对象
        }

        bitmap.Save(Path.Combine(Path.GetDirectoryName(fileName), "crop_" + Path.GetFileName(fileName)), ImageFormat.Jpeg); // 保存剪切后的位图对象
    }
}

2.3 调用函数

CropImage("test.jpg", 50, 50, 100, 100); // 剪切test.jpg,以(50,50)为起点,剪切大小为100x100

以上就是C#图片缩放和剪切实现的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#图片缩放图片剪切功能实现(等比缩放) - Python技术站

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

相关文章

  • 使用C#实现在屏幕上画图效果的代码实例

    下面是使用C#实现在屏幕上画图效果的完整攻略。 目录 准备工作 绘制线段 绘制多边形 示例说明一:绘制简单的三角形 示例说明二:绘制带填充的矩形 准备工作 在C#中,我们可以通过System.Drawing命名空间下的Graphics类来实现在屏幕上的画图效果。在使用之前,需要进行如下准备工作: 引用命名空间 using System.Drawing; 创建…

    C# 2023年6月6日
    00
  • C#常用字符串加密解密方法封装代码

    非常感谢您对C#常用字符串加密解密方法封装代码的关注。下面为您详细介绍如何实现该功能。 1. 基本概念 在介绍具体的代码实现之前,首先需要了解一些基本概念。 1.1 加密和解密 加密是指将原始的明文数据通过一定的算法转换为密文,以达到防止信息泄露的目的;而解密则是指将密文数据还原回原始的明文数据。 1.2 对称加密和非对称加密 对称加密是指加密和解密使用同一…

    C# 2023年6月7日
    00
  • asp.net 2.0里也可以用JSON的使用方法

    ASP.NET 2.0是一个非常流行的.NET开发框架,它可以与JSON(JavaScript Object Notation)结合使用以进行数据交换。下面是使用JSON的方法的完整攻略: 1. 引入JavaScriptSerializer .NET Framework 2.0引入了JavaScriptSerializer类,可以使用它来序列化和反序列化.N…

    C# 2023年5月31日
    00
  • C#实现简单学生信息管理系统

    C#实现简单学生信息管理系统 介绍 本文将详细讲解如何使用C#实现一个简单的学生信息管理系统。该系统可以实现学生信息的增删改查等基本功能,并且可以将数据存储在本地文件中。 准备工作 在编写学生信息管理系统之前,我们需要准备以下工作: 安装Visual Studio或其他C#开发环境。 确保已经学习了C#的基础知识。 确定学生信息的字段和数据类型。例如,我们需…

    C# 2023年6月2日
    00
  • C#调用C++版本dll时的类型转换需要注意的问题小结

    以下是详细的攻略。 标题 “C#调用C++版本dll时的类型转换需要注意的问题小结” 前言 在C#开发中,调用C++版本的dll时,需要进行类型转换。若不注意,可能会出现类型转换错误,导致程序崩溃。因此需要注意一些问题。 正文 问题1:传递指针类型 在C#中无法直接传递C++中的指针类型,需要通过IntPtr类型进行转换。 例如,C++中的函数声明如下: v…

    C# 2023年5月15日
    00
  • asp.net 关于==?:和if()else()条件判断等效例子

    ASP.NET 是一种基于 .NET Framework 的 Web 应用程序开发框架,它支持 C#、VB.NET、JScript.NET 和其他高级编程语言。在 ASP.NET 中,我们经常会用到条件判断语句,其中 “==?:” 是常用的一个运算符,而if…else…则是最常见的条件判断语句之一。 1. “==?:”运算符 “==?:” 意思是在判…

    C# 2023年5月31日
    00
  • C# ContainsValue(Object):确定集合是否包含具有指定值的元素

    C# ContainsValue(Object)方法详解 1. 方法介绍 ContainsValue()方法是C#中Dictionary集合类的一个方法,用于判断字典中是否包含指定的值。 语法结构如下所示: public bool ContainsValue(TValue value); 2. 参数说明 value:要在字典中查找的值。 3. 返回值 如果字…

    C# 2023年4月19日
    00
  • c# 实现RSA非对称加密算法

    C# 实现RSA非对称加密算法攻略 RSA加密算法简介 RSA加密算法是一种非对称加密算法,常用于网络通信中的数据加密。 该算法利用了两个相对来说很大的质数来生成公钥与私钥。公钥可自由分发,用于数据的加密;而私钥则由加密方自己保存,用于解密已被加密的数据。因为公钥可以公开,所以RSA加密算法是非对称加密;而且基于数论,经过加解密后,保证了数据的完整性、保密性…

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