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" />
<PackageReference Include="ZYW.ZYWImage" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=ZYW.ZYWImage&version=1.0.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
IMGHelper - 图片处理辅助类库
介绍
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 |
注意事项
- 依赖:该类库基于
System.Drawing,需确保项目引用System.Drawing.Common包(.NET Framework 已内置,.NET Core/.NET 5+ 需手动安装)。 - 资源释放:使用图片对象后建议手动释放(
Dispose()),避免内存泄漏。 - 异常处理:部分方法包含基础异常捕获,建议业务层增加额外的异常处理逻辑。
- 格式支持:默认优先处理 JPEG 格式,支持 GIF/PNG/BMP 等格式的识别与转换。
版本历史
| 版本 | 更新说明 |
|---|---|
| 1.0.0 | 初始版本,包含核心图片处理功能 |
许可证
本项目采用 MIT 许可证开源,详情请参考 LICENSE 文件。
问题反馈
如有 bug 或功能建议,请通过 GitHub Issues 反馈,或联系作者邮箱:[your-email@example.com]。
| Product | Versions 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.
-
.NETStandard 2.0
- System.Drawing.Common (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.