Commit 6c34a18
committed
perf: 优化图片导出性能,修复测试断言问题
1. 使用 SKCodec 替代 Image.Load 读取图片元数据,跳过解码/编码
- ExcelPicture 新增原始字节构造函数,直接写入 Excel 包
- ExcelDrawings 新增 AddPictureFromBytes 方法
- ExcelPackage.AddImage 修复 uri=null 时 contentType 被硬编码为 image/jpeg 的问题
2. AddPictures 支持并行加载 + 应用层去重
- 同一 URL 只下载一次,通过 ConcurrentDictionary 缓存
- Parallel.ForEach 并行下载,串行写入 Excel
3. AutoFit 字体缓存,优化 Linux 性能
- ExcelRangeBase 预加载 SKTypeface 到缓存,避免每个 cell 都调用 fontconfig
- SKTypeface 和 SKFont 在 finally 中统一释放
4. 修复测试断言问题
- .Equals() / .Any() 返回值未断言(空操作)→ 改为 .ShouldBe() / .ShouldBeTrue()
- AttrsExport_Test 日期格式列号修正(D2/E2 而非 E2/F2)
- ExportWithJPG_Test 补充断言
- AttrExportWithColAutoCenterData_Test 文件路径冲突修复
- RequiredIf_Test Culture 全局状态泄漏修复(try/finally)
- ImportTestColumnIndex_Test 删除调试遗留代码
5. 新增 ImageOptimization_Tests(21 个测试)
- IdentifyImage / DecodeBase64ToBytes / ReadImageBytes 单元测试
- AddPictureFromBytes / ExcelPicture 原始字节集成测试
- 端到端导出测试(多图/混合/去重/Base64)
Refs #571
Refs #616(部分解决:主导出路径已用 SKCodec 替代,模板导出/导入/颜色系统仍需迁移)1 parent c469dfd commit 6c34a18
9 files changed
Lines changed: 799 additions & 157 deletions
File tree
- src
- EPPlus/EPPlus
- Drawing
- Magicodes.ExporterAndImporter.Excel
- Images
- Utility
- Magicodes.ExporterAndImporter.Tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
352 | 352 | | |
353 | 353 | | |
354 | 354 | | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
355 | 376 | | |
356 | 377 | | |
357 | 378 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
166 | 166 | | |
167 | 167 | | |
168 | 168 | | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
169 | 221 | | |
170 | 222 | | |
171 | 223 | | |
| |||
246 | 298 | | |
247 | 299 | | |
248 | 300 | | |
249 | | - | |
| 301 | + | |
250 | 302 | | |
251 | 303 | | |
252 | 304 | | |
| |||
256 | 308 | | |
257 | 309 | | |
258 | 310 | | |
259 | | - | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
260 | 317 | | |
261 | 318 | | |
262 | 319 | | |
| |||
267 | 324 | | |
268 | 325 | | |
269 | 326 | | |
| 327 | + | |
270 | 328 | | |
271 | 329 | | |
272 | 330 | | |
| |||
348 | 406 | | |
349 | 407 | | |
350 | 408 | | |
351 | | - | |
| 409 | + | |
352 | 410 | | |
353 | | - | |
| 411 | + | |
354 | 412 | | |
355 | 413 | | |
356 | 414 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
440 | 440 | | |
441 | 441 | | |
442 | 442 | | |
443 | | - | |
444 | | - | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
445 | 447 | | |
446 | 448 | | |
447 | 449 | | |
| |||
455 | 457 | | |
456 | 458 | | |
457 | 459 | | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
458 | 477 | | |
459 | 478 | | |
460 | 479 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
918 | 918 | | |
919 | 919 | | |
920 | 920 | | |
921 | | - | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
922 | 927 | | |
923 | | - | |
| 928 | + | |
924 | 929 | | |
925 | | - | |
926 | | - | |
| 930 | + | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
| 935 | + | |
| 936 | + | |
| 937 | + | |
927 | 938 | | |
928 | | - | |
929 | | - | |
930 | | - | |
| 939 | + | |
| 940 | + | |
| 941 | + | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
| 945 | + | |
| 946 | + | |
| 947 | + | |
| 948 | + | |
931 | 949 | | |
932 | 950 | | |
933 | | - | |
| 951 | + | |
934 | 952 | | |
935 | | - | |
| 953 | + | |
| 954 | + | |
| 955 | + | |
| 956 | + | |
936 | 957 | | |
937 | | - | |
938 | | - | |
939 | | - | |
940 | | - | |
941 | | - | |
942 | | - | |
| 958 | + | |
| 959 | + | |
| 960 | + | |
| 961 | + | |
| 962 | + | |
| 963 | + | |
| 964 | + | |
| 965 | + | |
| 966 | + | |
| 967 | + | |
| 968 | + | |
| 969 | + | |
| 970 | + | |
| 971 | + | |
943 | 972 | | |
944 | 973 | | |
945 | 974 | | |
| |||
972 | 1001 | | |
973 | 1002 | | |
974 | 1003 | | |
975 | | - | |
976 | 1004 | | |
977 | | - | |
978 | | - | |
| 1005 | + | |
| 1006 | + | |
| 1007 | + | |
| 1008 | + | |
| 1009 | + | |
| 1010 | + | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
| 1016 | + | |
979 | 1017 | | |
980 | 1018 | | |
981 | | - | |
| 1019 | + | |
| 1020 | + | |
| 1021 | + | |
982 | 1022 | | |
983 | 1023 | | |
984 | | - | |
| 1024 | + | |
985 | 1025 | | |
986 | 1026 | | |
987 | 1027 | | |
988 | 1028 | | |
989 | 1029 | | |
990 | 1030 | | |
991 | | - | |
992 | 1031 | | |
993 | | - | |
994 | 1032 | | |
995 | | - | |
996 | 1033 | | |
997 | | - | |
998 | 1034 | | |
999 | | - | |
1000 | 1035 | | |
1001 | | - | |
1002 | 1036 | | |
1003 | | - | |
1004 | | - | |
1005 | | - | |
1006 | | - | |
1007 | | - | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
1008 | 1040 | | |
1009 | 1041 | | |
1010 | | - | |
| 1042 | + | |
1011 | 1043 | | |
1012 | 1044 | | |
1013 | 1045 | | |
| |||
0 commit comments