ZYW.ZYWImage 1.0.7

dotnet add package ZYW.ZYWImage --version 1.0.7
                    
NuGet\Install-Package ZYW.ZYWImage -Version 1.0.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ZYW.ZYWImage" Version="1.0.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ZYW.ZYWImage" Version="1.0.7" />
                    
Directory.Packages.props
<PackageReference Include="ZYW.ZYWImage" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ZYW.ZYWImage --version 1.0.7
                    
#r "nuget: ZYW.ZYWImage, 1.0.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ZYW.ZYWImage@1.0.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ZYW.ZYWImage&version=1.0.7
                    
Install as a Cake Addin
#tool nuget:?package=ZYW.ZYWImage&version=1.0.7
                    
Install as a Cake Tool

IMGHelper - 图片处理辅助类库

NuGet Version NuGet Downloads

介绍

IMGHelper 是一个基于 .NET Framework 开发的图片处理辅助类库,提供了一系列便捷的图片操作方法,包括图片缩放、裁剪、格式转换、字节数组/流转换、Base64 编解码、图片压缩、缩略图生成、长图切割等功能,可满足日常图片处理的大部分场景需求。

功能特性

  • ✅ 图片按比例缩放(支持指定目标宽高)
  • ✅ 图片区域裁剪
  • ✅ 图片格式转换(默认转为JPEG)
  • ✅ 图片与字节数组/内存流互转
  • ✅ Base64 编码/解码(支持文件路径和图片对象)
  • ✅ 图片质量压缩(指定目标大小自动调整压缩质量)
  • ✅ 缩略图生成(按比例裁剪后缩放)
  • ✅ 长图片垂直切割(按指定高度分割为多张)
  • ✅ 无锁加载图片(避免文件占用问题)

安装

通过 NuGet 包管理器安装:

Install-Package IMGHelper

或通过 .NET CLI 安装:

dotnet add package IMGHelper

快速开始

命名空间引用

using Helper;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;

核心功能示例

1. 图片缩放
// 加载图片
Bitmap originalImg = new Bitmap("test.jpg");
// 缩放到 720x1440(按比例缩放,居中显示)
Bitmap scaledImg = originalImg.Zoom(720, 1440);
// 保存缩放后的图片
scaledImg.Save("scaled.jpg", ImageFormat.Jpeg);
2. 图片裁剪
Image originImg = Image.FromFile("test.jpg");
// 裁剪左上角 200x200 区域
Rectangle cropRegion = new Rectangle(0, 0, 200, 200);
Image croppedImg = originImg.Crop(cropRegion);
croppedImg.Save("cropped.jpg", ImageFormat.Jpeg);
3. 图片压缩(指定目标大小)
Image img = Image.FromFile("large.jpg");
// 压缩至 100KB 以内(默认目标大小 102400 字节)
Image compressedImg = img.Zip(ImageFormat.Jpeg, 1024 * 100);
compressedImg.Save("compressed.jpg", ImageFormat.Jpeg);
4. 图片转 Base64
// 从文件路径转 Base64
string base64Str = "test.jpg".ToBase64FromImage();
// 从图片对象转 Base64
Image img = Image.FromFile("test.jpg");
string base64FromImg = img.ToBase64();
5. Base64 转图片
string base64Str = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAAAAAAAD/...";
// 移除前缀(如需)
base64Str = base64Str.Split(',')[1];
Image img = base64Str.ToImgFromBase64();
img.Save("fromBase64.jpg", ImageFormat.Jpeg);
6. 生成缩略图
Image img = Image.FromFile("original.jpg");
// 生成 200x200 缩略图(按比例裁剪)
Image thumbnail = img.CreateThumbnail(200, 200);
thumbnail.Save("thumbnail.jpg", ImageFormat.Jpeg);
7. 长图切割
Image longImg = Image.FromFile("long.jpg");
// 按高度 500 切割为多张图片
List<Image> slicedImgs = longImg.SplitWithVertically(500);
// 保存切割后的图片
for (int i = 0; i < slicedImgs.Count; i++)
{
    slicedImgs[i].Save($"slice_{i}.jpg", ImageFormat.Jpeg);
}
8. 无锁加载图片
// 避免文件锁定,安全加载图片
Image img = "test.jpg".LoadImgNoLock();
if (img != null)
{
    img.Save("unlocked.jpg", ImageFormat.Jpeg);
}

API 参考

扩展方法(所有方法均为 Image/Bitmap/string 扩展方法)

方法名 说明 参数 返回值
Zoom(int destHeight, int destWidth) 按比例缩放图片,居中显示 destHeight:目标高度;destWidth:目标宽度 Bitmap
Crop(Rectangle region) 裁剪指定区域的图片 region:裁剪区域(矩形) Image
SetSize(int ToHeight, int ToWidth) 转换为指定尺寸的 JPG 图片 ToHeight:目标高度;ToWidth:目标宽度 Image
ToBuffbyte() 将图片转换为字节数组 - byte[]
ToStream() 将图片/图片路径转换为内存流 - MemoryStream
ToImg() 将内存流转为图片 - Image
ToBase64FromImage() 从图片路径转换为 Base64 编码 - string
ToBase64() 从图片对象转换为 Base64 编码 - string
ToImgFromBase64(string base64str) Base64 编码转为图片 base64str:Base64 字符串 Image
Zip(ImageFormat format, long targetLen=1024*100, long srcLen=0) 压缩图片至指定大小 format:图片格式;targetLen:目标大小(字节);srcLen:原始大小(可选) Image
GetFormat() 获取图片格式(默认返回 JPEG) - ImageFormat
CreateThumbnail(int width, int height) 生成指定尺寸的缩略图 width:目标宽度;height:目标高度 Image
SplitWithVertically(int sliceHeight) 垂直切割长图片 sliceHeight:单张切片高度 List<Image>
LoadImgNoLock(string filePath) 无锁加载图片(避免文件占用) filePath:图片路径 Image

注意事项

  1. 依赖:该类库基于 System.Drawing,需确保项目引用 System.Drawing.Common 包(.NET Framework 已内置,.NET Core/.NET 5+ 需手动安装)。
  2. 资源释放:使用图片对象后建议手动释放(Dispose()),避免内存泄漏。
  3. 异常处理:部分方法包含基础异常捕获,建议业务层增加额外的异常处理逻辑。
  4. 格式支持:默认优先处理 JPEG 格式,支持 GIF/PNG/BMP 等格式的识别与转换。

版本历史

版本 更新说明
1.0.0 初始版本,包含核心图片处理功能

许可证

本项目采用 MIT 许可证开源,详情请参考 LICENSE 文件。

问题反馈

如有 bug 或功能建议,请通过 GitHub Issues 反馈,或联系作者邮箱:[your-email@example.com]。

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.7 85 9/24/2026
1.0.6 134 6/11/2026
1.0.5 113 5/20/2026
1.0.4 117 5/9/2026
1.0.3 117 3/17/2026
1.0.2 116 3/14/2026
1.0.1 79 3/14/2026