优化集合图像重新编辑对于重型应用程序(电子商务目录、画廊、传输)至关重要。 Aspose.Imaging for .NET 允许您有效地加载、重定向和编码图片,同时保持代码完全管理和跨平台。
完整的例子
步骤1:选择合适的回收策略
选择符合您的输出限制的策略:
- ** 限制框(推荐小型):** 使用
FitInto
图像适合内部targetWidth × targetHeight
没有扭曲(保持视角比例)。 - ** 绝对尺寸(准确的像素):** 如果消费者需要固定维度,则使用绝对重量(如果视角比例不同,可能会扭曲)。
- ** 百分比尺寸:** 均匀下滑的手套(例如,原件的50%)。
提示: 对于商店前网和社交卡, FitInto
通常是最安全的故障。
步骤2:控制记忆和缓存
Aspose.Imaging 支持可配置的加密,所以大堆不超过 RAM:
- 更喜欢 在磁盘上加密 大工作(SSD支持的路径)。
- 在处理之前设置缓存文件夹和预算大小。
// Configure once at startup (example values)
Aspose.Imaging.Cache.CacheType = Aspose.Imaging.Cache.CacheType.CacheOnDisk;
Aspose.Imaging.Cache.CacheFolder = @"D:\imaging-cache";
Aspose.Imaging.Cache.CacheSize = 1L * 1024 * 1024 * 1024; // 1 GB
也:
- 每个人都有
Image
一旦被拯救了。 - 避免同时保存许多解码图像 - 每个文件的过程。
步骤3:安全平行
使用 Parallel.ForEach
如《古兰经》中所说:
- 设置
MaxDegreeOfParallelism
为您的盒子提供敏感值(CPU核心、I/O速度、内存主机)。 - 每个任务都必须按照自己的“工作”来完成。
Image
例如:不要在线上共享图像对象。 - 保持您的编码选项不变,以避免混乱。
指南: 开始与 MaxDegreeOfParallelism = Environment.ProcessorCount
并在配置后调整。
步骤4:选择密码和质量故意
- 对于 JPEG 输出,使用 JpegOptions.Quality (典型甜点: 75–90) 的文件大小和质量。
- 对于需要透明度或无损产量的资产,请使用 PngOptions。
- 根据使用情况保持输出格式一致(例如,照片的JPEG,UI资产的PNG)。
步骤5:短循环失败;保持包动
将每个文件插入一个尝试/捕获(如您所做)并登录路径 + 例外。
- 滑动非图像文件(过滤扩展向前)。
- 登录原始和输出尺寸以验证储蓄。
- 写错误到 CSV 重新运行。
步骤6: I/O 卫生
- 确保输出目录存在并在 ** 快速磁盘** (SSD) 上。
- 避免写出输入;写到一个单独的目录。
- 如果您有数以百万计的文件,将输出分成字段,以保持目录列表快速。
步骤7:通过快速健康检查检查结果
重复后:
- 对您的目标进行宽度/高度验证。
- 确认文件类型/扩展符合使用的编码器。
- 点检查常见边缘案例的视觉质量(景观,小图标,透明的PNG)。
最佳实践(Checklist)
- ** 存储:** 设置
CacheType
,CacheFolder
而一个合理的CacheSize
. - ** 平行性:** 使用
Parallel.ForEach
与TunedMaxDegreeOfParallelism
没有共享Image
例子。 - 可用:* 常用
Image
快速。
- 可用:* 常用
- ** 编码器:** 使用
JpegOptions.Quality
JPEG;转到PngOptions
无损 / 阿尔法 - I/O: 单独输入/输出根;预创目录。
- ** 过滤:** 在加载之前限制已知图像扩展。
- 登录: 记录错误和基本测量(计算,MB输入/输出)。
- 更新: 保持 Aspose.Imaging 更新,以便不断提高性能。