librawspeed-full 1.0.129

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/CHANGELOG.md +1138 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1414 -0
  4. package/binding.gyp +55 -0
  5. package/deps/LibRaw-Source/LibRaw-0.21.4/.clang-format +4 -0
  6. package/deps/LibRaw-Source/LibRaw-0.21.4/COPYRIGHT +27 -0
  7. package/deps/LibRaw-Source/LibRaw-0.21.4/Changelog.txt +2802 -0
  8. package/deps/LibRaw-Source/LibRaw-0.21.4/DEVELOPER-NOTES +20 -0
  9. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/dng-sdk-1_4-allow-VC5-validate.diff +21 -0
  10. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/dng-sdk-1_6-hide-ccVc5-definitiion.diff +15 -0
  11. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/dng-sdk-allow-VC5-validate.diff +21 -0
  12. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/gpr_read_image.cpp.diff +29 -0
  13. package/deps/LibRaw-Source/LibRaw-0.21.4/GoPro/gpr_read_image.h.diff +12 -0
  14. package/deps/LibRaw-Source/LibRaw-0.21.4/INSTALL +51 -0
  15. package/deps/LibRaw-Source/LibRaw-0.21.4/LICENSE.CDDL +340 -0
  16. package/deps/LibRaw-Source/LibRaw-0.21.4/LICENSE.LGPL +458 -0
  17. package/deps/LibRaw-Source/LibRaw-0.21.4/LibRaw.pro +19 -0
  18. package/deps/LibRaw-Source/LibRaw-0.21.4/LibRaw.sln +123 -0
  19. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile +2135 -0
  20. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.am +140 -0
  21. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.devel.nopp +230 -0
  22. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.devel.noppr2i +227 -0
  23. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.dist +501 -0
  24. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.in +2135 -0
  25. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.mingw +297 -0
  26. package/deps/LibRaw-Source/LibRaw-0.21.4/Makefile.msvc +628 -0
  27. package/deps/LibRaw-Source/LibRaw-0.21.4/README.DNGSDK.txt +43 -0
  28. package/deps/LibRaw-Source/LibRaw-0.21.4/README.GoPro.txt +112 -0
  29. package/deps/LibRaw-Source/LibRaw-0.21.4/README.RawSpeed.txt +62 -0
  30. package/deps/LibRaw-Source/LibRaw-0.21.4/README.cmake +9 -0
  31. package/deps/LibRaw-Source/LibRaw-0.21.4/README.demosaic-packs +17 -0
  32. package/deps/LibRaw-Source/LibRaw-0.21.4/README.md +106 -0
  33. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.cpucount-unix.patch +15 -0
  34. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.qmake-pro-files.patch +84 -0
  35. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.samsung-decoder.patch +39 -0
  36. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.uncompressed-color-dng.patch +13 -0
  37. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed.win32-dll.patch +186 -0
  38. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed/rawspeed_xmldata.cpp +4115 -0
  39. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/README.md +69 -0
  40. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/patches/01.CameraMeta-extensibility.patch +13 -0
  41. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/patches/02.Makernotes-processing.patch +36 -0
  42. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/patches/03.remove-limits-and-logging.patch +245 -0
  43. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/patches/04.clang-cl-compatibility.patch +37 -0
  44. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi.cpp +251 -0
  45. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi.h +83 -0
  46. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rawspeed3_capi_test.cpp +71 -0
  47. package/deps/LibRaw-Source/LibRaw-0.21.4/RawSpeed3/rawspeed3_c_api/rsxml2c.sh +5 -0
  48. package/deps/LibRaw-Source/LibRaw-0.21.4/aclocal.m4 +1674 -0
  49. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/.dirstamp +0 -0
  50. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/.keep_me +2 -0
  51. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/4channels +0 -0
  52. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/dcraw_emu +0 -0
  53. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/mem_image +0 -0
  54. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/multirender_test +0 -0
  55. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/postprocessing_benchmark +0 -0
  56. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/raw-identify +0 -0
  57. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/rawtextdump +0 -0
  58. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/simple_dcraw +0 -0
  59. package/deps/LibRaw-Source/LibRaw-0.21.4/bin/unprocessed_raw +0 -0
  60. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/include/libraw/libraw.h +534 -0
  61. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/include/libraw/libraw_alloc.h +148 -0
  62. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/include/libraw/libraw_const.h +814 -0
  63. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/include/libraw/libraw_datastream.h +410 -0
  64. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/include/libraw/libraw_internal.h +341 -0
  65. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/include/libraw/libraw_types.h +1175 -0
  66. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/include/libraw/libraw_version.h +63 -0
  67. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/lib/libraw.a +0 -0
  68. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/lib/libraw.la +41 -0
  69. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/lib/libraw_r.a +0 -0
  70. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/lib/libraw_r.la +41 -0
  71. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/lib/pkgconfig/libraw.pc +12 -0
  72. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/lib/pkgconfig/libraw_r.pc +12 -0
  73. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/share/doc/libraw/COPYRIGHT +27 -0
  74. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/share/doc/libraw/Changelog.txt +2802 -0
  75. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/share/doc/libraw/LICENSE.CDDL +340 -0
  76. package/deps/LibRaw-Source/LibRaw-0.21.4/build/darwin-arm64/share/doc/libraw/LICENSE.LGPL +458 -0
  77. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/4channels.pro +5 -0
  78. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/4channels.vcxproj +145 -0
  79. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/4channels.vcxproj.filters +18 -0
  80. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_emu.pro +6 -0
  81. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_emu.vcxproj +145 -0
  82. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_emu.vcxproj.filters +18 -0
  83. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_half.pro +6 -0
  84. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_half.vcxproj +145 -0
  85. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/dcraw_half.vcxproj.filters +18 -0
  86. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/half_mt.pro +10 -0
  87. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw-common-lib.pro +28 -0
  88. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw-common.pro +8 -0
  89. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw.pro +70 -0
  90. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw.vcxproj +234 -0
  91. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/libraw.vcxproj.filters +295 -0
  92. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/mem_image.pro +6 -0
  93. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/mem_image.vcxproj +145 -0
  94. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/mem_image.vcxproj.filters +18 -0
  95. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/multirender_test.pro +6 -0
  96. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/multirender_test.vcxproj +145 -0
  97. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/multirender_test.vcxproj.filters +18 -0
  98. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/openbayer_sample.pro +6 -0
  99. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/openbayer_sample.vcxproj +145 -0
  100. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/openbayer_sample.vcxproj.filters +18 -0
  101. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.pro +4 -0
  102. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.vcxproj +145 -0
  103. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/postprocessing_benchmark.vcxproj.filters +18 -0
  104. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/raw-identify.pro +6 -0
  105. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/raw-identify.vcxproj +145 -0
  106. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/raw-identify.vcxproj.filters +18 -0
  107. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/rawtextdump.pro +6 -0
  108. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/rawtextdump.vcxproj +145 -0
  109. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/rawtextdump.vcxproj.filters +18 -0
  110. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/simple_dcraw.pro +6 -0
  111. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/simple_dcraw.vcxproj +145 -0
  112. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/simple_dcraw.vcxproj.filters +18 -0
  113. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/unprocessed_raw.pro +6 -0
  114. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/unprocessed_raw.vcxproj +145 -0
  115. package/deps/LibRaw-Source/LibRaw-0.21.4/buildfiles/unprocessed_raw.vcxproj.filters +18 -0
  116. package/deps/LibRaw-Source/LibRaw-0.21.4/compile +347 -0
  117. package/deps/LibRaw-Source/LibRaw-0.21.4/config.guess +1433 -0
  118. package/deps/LibRaw-Source/LibRaw-0.21.4/config.log +930 -0
  119. package/deps/LibRaw-Source/LibRaw-0.21.4/config.status +2090 -0
  120. package/deps/LibRaw-Source/LibRaw-0.21.4/config.sub +1804 -0
  121. package/deps/LibRaw-Source/LibRaw-0.21.4/configure +22084 -0
  122. package/deps/LibRaw-Source/LibRaw-0.21.4/configure.ac +153 -0
  123. package/deps/LibRaw-Source/LibRaw-0.21.4/depcomp +791 -0
  124. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-C.html +187 -0
  125. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-CXX.html +881 -0
  126. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-datastruct.html +1341 -0
  127. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-notes.html +305 -0
  128. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/API-overview.html +66 -0
  129. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/Install-LibRaw.html +124 -0
  130. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/Samples-LibRaw.html +213 -0
  131. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/Why-LibRaw.html +65 -0
  132. package/deps/LibRaw-Source/LibRaw-0.21.4/doc/index.html +38 -0
  133. package/deps/LibRaw-Source/LibRaw-0.21.4/install-sh +501 -0
  134. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/dcraw_defs.h +66 -0
  135. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/dcraw_fileio_defs.h +25 -0
  136. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/defines.h +193 -0
  137. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/dmp_include.h +27 -0
  138. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/libraw_cameraids.h +320 -0
  139. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/libraw_cxx_defs.h +133 -0
  140. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/libraw_internal_funcs.h +412 -0
  141. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/var_defines.h +215 -0
  142. package/deps/LibRaw-Source/LibRaw-0.21.4/internal/x3f_tools.h +539 -0
  143. package/deps/LibRaw-Source/LibRaw-0.21.4/lib/.dirstamp +0 -0
  144. package/deps/LibRaw-Source/LibRaw-0.21.4/lib/.libs/libraw.a +0 -0
  145. package/deps/LibRaw-Source/LibRaw-0.21.4/lib/.libs/libraw.lai +41 -0
  146. package/deps/LibRaw-Source/LibRaw-0.21.4/lib/.libs/libraw_r.a +0 -0
  147. package/deps/LibRaw-Source/LibRaw-0.21.4/lib/.libs/libraw_r.lai +41 -0
  148. package/deps/LibRaw-Source/LibRaw-0.21.4/lib/libraw.la +41 -0
  149. package/deps/LibRaw-Source/LibRaw-0.21.4/lib/libraw_r.la +41 -0
  150. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw.h +534 -0
  151. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_alloc.h +148 -0
  152. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_const.h +814 -0
  153. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_datastream.h +410 -0
  154. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_internal.h +341 -0
  155. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_types.h +1175 -0
  156. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw/libraw_version.h +63 -0
  157. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw.pc +12 -0
  158. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw.pc.in +12 -0
  159. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw_r.pc +12 -0
  160. package/deps/LibRaw-Source/LibRaw-0.21.4/libraw_r.pc.in +12 -0
  161. package/deps/LibRaw-Source/LibRaw-0.21.4/libtool +12190 -0
  162. package/deps/LibRaw-Source/LibRaw-0.21.4/ltmain.sh +11524 -0
  163. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/ax_openmp.m4 +99 -0
  164. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/libtool.m4 +8488 -0
  165. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/ltoptions.m4 +467 -0
  166. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/ltsugar.m4 +124 -0
  167. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/ltversion.m4 +24 -0
  168. package/deps/LibRaw-Source/LibRaw-0.21.4/m4/lt~obsolete.m4 +99 -0
  169. package/deps/LibRaw-Source/LibRaw-0.21.4/missing +215 -0
  170. package/deps/LibRaw-Source/LibRaw-0.21.4/object/.keep_me +0 -0
  171. package/deps/LibRaw-Source/LibRaw-0.21.4/rsxml2c.sh +6 -0
  172. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_4channels-4channels.Po +0 -0
  173. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_dcraw_emu-dcraw_emu.Po +0 -0
  174. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_dcraw_half-dcraw_half.Po +0 -0
  175. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_half_mt-half_mt.Po +0 -0
  176. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_mem_image-mem_image_sample.Po +0 -0
  177. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_multirender_test-multirender_test.Po +0 -0
  178. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_postprocessing_benchmark-postprocessing_benchmark.Po +0 -0
  179. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_raw_identify-raw-identify.Po +0 -0
  180. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_rawtextdump-rawtextdump.Po +0 -0
  181. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_simple_dcraw-simple_dcraw.Po +0 -0
  182. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.deps/bin_unprocessed_raw-unprocessed_raw.Po +0 -0
  183. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/.dirstamp +0 -0
  184. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/4channels.cpp +174 -0
  185. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/Makefile +2 -0
  186. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/dcraw_emu.cpp +670 -0
  187. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/dcraw_half.c +78 -0
  188. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/half_mt.c +178 -0
  189. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/half_mt_win32.c +212 -0
  190. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/mem_image_sample.cpp +282 -0
  191. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/multirender_test.cpp +107 -0
  192. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/openbayer_sample.cpp +65 -0
  193. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/postprocessing_benchmark.cpp +223 -0
  194. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/raw-identify.cpp +743 -0
  195. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/rawtextdump.cpp +144 -0
  196. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/simple_dcraw.cpp +217 -0
  197. package/deps/LibRaw-Source/LibRaw-0.21.4/samples/unprocessed_raw.cpp +319 -0
  198. package/deps/LibRaw-Source/LibRaw-0.21.4/shlib-version.sh +11 -0
  199. package/deps/LibRaw-Source/LibRaw-0.21.4/src/.deps/.dirstamp +0 -0
  200. package/deps/LibRaw-Source/LibRaw-0.21.4/src/.deps/libraw_c_api.Plo +1597 -0
  201. package/deps/LibRaw-Source/LibRaw-0.21.4/src/.deps/libraw_datastream.Plo +1604 -0
  202. package/deps/LibRaw-Source/LibRaw-0.21.4/src/.dirstamp +0 -0
  203. package/deps/LibRaw-Source/LibRaw-0.21.4/src/Makefile +2 -0
  204. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/.dirstamp +0 -0
  205. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/canon_600.Plo +1656 -0
  206. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/crx.Plo +1659 -0
  207. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/decoders_dcraw.Plo +1657 -0
  208. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/decoders_libraw.Plo +1659 -0
  209. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/decoders_libraw_dcrdefs.Plo +1657 -0
  210. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/dng.Plo +1656 -0
  211. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/fp_dng.Plo +1659 -0
  212. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/fuji_compressed.Plo +1659 -0
  213. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/generic.Plo +1656 -0
  214. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/kodak_decoders.Plo +1656 -0
  215. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/load_mfbacks.Plo +1656 -0
  216. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/smal.Plo +1656 -0
  217. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/unpack.Plo +1661 -0
  218. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.deps/unpack_thumb.Plo +1659 -0
  219. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/.dirstamp +0 -0
  220. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/canon_600.cpp +225 -0
  221. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/canon_600.lo +12 -0
  222. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/canon_600.o +0 -0
  223. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/crx.cpp +2781 -0
  224. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/crx.lo +12 -0
  225. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/crx.o +0 -0
  226. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_dcraw.cpp +1816 -0
  227. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_dcraw.lo +12 -0
  228. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_dcraw.o +0 -0
  229. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_libraw.cpp +873 -0
  230. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_libraw.lo +12 -0
  231. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_libraw.o +0 -0
  232. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_libraw_dcrdefs.cpp +411 -0
  233. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_libraw_dcrdefs.lo +12 -0
  234. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/decoders_libraw_dcrdefs.o +0 -0
  235. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/dng.cpp +284 -0
  236. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/dng.lo +12 -0
  237. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/dng.o +0 -0
  238. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/fp_dng.cpp +689 -0
  239. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/fp_dng.lo +12 -0
  240. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/fp_dng.o +0 -0
  241. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/fuji_compressed.cpp +1210 -0
  242. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/fuji_compressed.lo +12 -0
  243. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/fuji_compressed.o +0 -0
  244. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/generic.cpp +101 -0
  245. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/generic.lo +12 -0
  246. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/generic.o +0 -0
  247. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/kodak_decoders.cpp +524 -0
  248. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/kodak_decoders.lo +12 -0
  249. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/kodak_decoders.o +0 -0
  250. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/load_mfbacks.cpp +936 -0
  251. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/load_mfbacks.lo +12 -0
  252. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/load_mfbacks.o +0 -0
  253. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/smal.cpp +181 -0
  254. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/smal.lo +12 -0
  255. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/smal.o +0 -0
  256. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/unpack.cpp +508 -0
  257. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/unpack.lo +12 -0
  258. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/unpack.o +0 -0
  259. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/unpack_thumb.cpp +405 -0
  260. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/unpack_thumb.lo +12 -0
  261. package/deps/LibRaw-Source/LibRaw-0.21.4/src/decoders/unpack_thumb.o +0 -0
  262. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/.deps/.dirstamp +0 -0
  263. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/.deps/aahd_demosaic.Plo +1653 -0
  264. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/.deps/ahd_demosaic.Plo +1656 -0
  265. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/.deps/dcb_demosaic.Plo +1656 -0
  266. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/.deps/dht_demosaic.Plo +1653 -0
  267. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/.deps/misc_demosaic.Plo +1656 -0
  268. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/.deps/xtrans_demosaic.Plo +1656 -0
  269. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/.dirstamp +0 -0
  270. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/aahd_demosaic.cpp +781 -0
  271. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/aahd_demosaic.lo +12 -0
  272. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/aahd_demosaic.o +0 -0
  273. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/ahd_demosaic.cpp +355 -0
  274. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/ahd_demosaic.lo +12 -0
  275. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/ahd_demosaic.o +0 -0
  276. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/dcb_demosaic.cpp +900 -0
  277. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/dcb_demosaic.lo +12 -0
  278. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/dcb_demosaic.o +0 -0
  279. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/dht_demosaic.cpp +1033 -0
  280. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/dht_demosaic.lo +12 -0
  281. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/dht_demosaic.o +0 -0
  282. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/misc_demosaic.cpp +420 -0
  283. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/misc_demosaic.lo +12 -0
  284. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/misc_demosaic.o +0 -0
  285. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/xtrans_demosaic.cpp +434 -0
  286. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/xtrans_demosaic.lo +12 -0
  287. package/deps/LibRaw-Source/LibRaw-0.21.4/src/demosaic/xtrans_demosaic.o +0 -0
  288. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/.deps/.dirstamp +0 -0
  289. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/.deps/dngsdk_glue.Plo +1659 -0
  290. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/.deps/rawspeed_glue.Plo +1659 -0
  291. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/.dirstamp +0 -0
  292. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/dngsdk_glue.cpp +416 -0
  293. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/dngsdk_glue.lo +12 -0
  294. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/dngsdk_glue.o +0 -0
  295. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/rawspeed_glue.cpp +286 -0
  296. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/rawspeed_glue.lo +12 -0
  297. package/deps/LibRaw-Source/LibRaw-0.21.4/src/integration/rawspeed_glue.o +0 -0
  298. package/deps/LibRaw-Source/LibRaw-0.21.4/src/libraw_c_api.cpp +457 -0
  299. package/deps/LibRaw-Source/LibRaw-0.21.4/src/libraw_c_api.lo +12 -0
  300. package/deps/LibRaw-Source/LibRaw-0.21.4/src/libraw_c_api.o +0 -0
  301. package/deps/LibRaw-Source/LibRaw-0.21.4/src/libraw_datastream.cpp +1046 -0
  302. package/deps/LibRaw-Source/LibRaw-0.21.4/src/libraw_datastream.lo +12 -0
  303. package/deps/LibRaw-Source/LibRaw-0.21.4/src/libraw_datastream.o +0 -0
  304. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/.dirstamp +0 -0
  305. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/adobepano.Plo +1656 -0
  306. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/canon.Plo +1657 -0
  307. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/ciff.Plo +1656 -0
  308. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/cr3_parser.Plo +1656 -0
  309. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/epson.Plo +1656 -0
  310. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/exif_gps.Plo +1657 -0
  311. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/fuji.Plo +1656 -0
  312. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/hasselblad_model.Plo +1657 -0
  313. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/identify.Plo +1657 -0
  314. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/identify_tools.Plo +1656 -0
  315. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/kodak.Plo +1656 -0
  316. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/leica.Plo +1656 -0
  317. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/makernotes.Plo +1656 -0
  318. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/mediumformat.Plo +1656 -0
  319. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/minolta.Plo +1656 -0
  320. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/misc_parsers.Plo +1656 -0
  321. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/nikon.Plo +1656 -0
  322. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/normalize_model.Plo +1657 -0
  323. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/olympus.Plo +1657 -0
  324. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/p1.Plo +1656 -0
  325. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/pentax.Plo +1657 -0
  326. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/samsung.Plo +1656 -0
  327. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/sony.Plo +1657 -0
  328. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.deps/tiff.Plo +1657 -0
  329. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/.dirstamp +0 -0
  330. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/adobepano.cpp +154 -0
  331. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/adobepano.lo +12 -0
  332. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/adobepano.o +0 -0
  333. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/canon.cpp +1335 -0
  334. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/canon.lo +12 -0
  335. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/canon.o +0 -0
  336. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/ciff.cpp +411 -0
  337. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/ciff.lo +12 -0
  338. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/ciff.o +0 -0
  339. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/cr3_parser.cpp +896 -0
  340. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/cr3_parser.lo +12 -0
  341. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/cr3_parser.o +0 -0
  342. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/epson.cpp +96 -0
  343. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/epson.lo +12 -0
  344. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/epson.o +0 -0
  345. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/exif_gps.cpp +430 -0
  346. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/exif_gps.lo +12 -0
  347. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/exif_gps.o +0 -0
  348. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/fuji.cpp +1427 -0
  349. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/fuji.lo +12 -0
  350. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/fuji.o +0 -0
  351. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/hasselblad_model.cpp +538 -0
  352. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/hasselblad_model.lo +12 -0
  353. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/hasselblad_model.o +0 -0
  354. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/identify.cpp +3167 -0
  355. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/identify.lo +12 -0
  356. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/identify.o +0 -0
  357. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/identify_tools.cpp +140 -0
  358. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/identify_tools.lo +12 -0
  359. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/identify_tools.o +0 -0
  360. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/kodak.cpp +363 -0
  361. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/kodak.lo +12 -0
  362. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/kodak.o +0 -0
  363. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/leica.cpp +375 -0
  364. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/leica.lo +12 -0
  365. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/leica.o +0 -0
  366. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/makernotes.cpp +786 -0
  367. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/makernotes.lo +12 -0
  368. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/makernotes.o +0 -0
  369. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/mediumformat.cpp +521 -0
  370. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/mediumformat.lo +12 -0
  371. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/mediumformat.o +0 -0
  372. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/minolta.cpp +110 -0
  373. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/minolta.lo +12 -0
  374. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/minolta.o +0 -0
  375. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/misc_parsers.cpp +694 -0
  376. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/misc_parsers.lo +12 -0
  377. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/misc_parsers.o +0 -0
  378. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/nikon.cpp +1051 -0
  379. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/nikon.lo +12 -0
  380. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/nikon.o +0 -0
  381. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/normalize_model.cpp +1451 -0
  382. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/normalize_model.lo +12 -0
  383. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/normalize_model.o +0 -0
  384. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/olympus.cpp +685 -0
  385. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/olympus.lo +12 -0
  386. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/olympus.o +0 -0
  387. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/p1.cpp +192 -0
  388. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/p1.lo +12 -0
  389. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/p1.o +0 -0
  390. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/pentax.cpp +675 -0
  391. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/pentax.lo +12 -0
  392. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/pentax.o +0 -0
  393. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/samsung.cpp +182 -0
  394. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/samsung.lo +12 -0
  395. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/samsung.o +0 -0
  396. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/sony.cpp +2320 -0
  397. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/sony.lo +12 -0
  398. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/sony.o +0 -0
  399. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/tiff.cpp +2198 -0
  400. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/tiff.lo +12 -0
  401. package/deps/LibRaw-Source/LibRaw-0.21.4/src/metadata/tiff.o +0 -0
  402. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/.deps/.dirstamp +0 -0
  403. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/.deps/aspect_ratio.Plo +1656 -0
  404. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/.deps/dcraw_process.Plo +1659 -0
  405. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/.deps/mem_image.Plo +1659 -0
  406. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/.deps/postprocessing_aux.Plo +1657 -0
  407. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/.deps/postprocessing_utils.Plo +1660 -0
  408. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/.deps/postprocessing_utils_dcrdefs.Plo +1657 -0
  409. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/.dirstamp +0 -0
  410. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/aspect_ratio.cpp +113 -0
  411. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/aspect_ratio.lo +12 -0
  412. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/aspect_ratio.o +0 -0
  413. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/dcraw_process.cpp +259 -0
  414. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/dcraw_process.lo +12 -0
  415. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/dcraw_process.o +0 -0
  416. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/mem_image.cpp +292 -0
  417. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/mem_image.lo +12 -0
  418. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/mem_image.o +0 -0
  419. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_aux.cpp +413 -0
  420. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_aux.lo +12 -0
  421. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_aux.o +0 -0
  422. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_ph.cpp +31 -0
  423. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_utils.cpp +190 -0
  424. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_utils.lo +12 -0
  425. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_utils.o +0 -0
  426. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_utils_dcrdefs.cpp +308 -0
  427. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_utils_dcrdefs.lo +12 -0
  428. package/deps/LibRaw-Source/LibRaw-0.21.4/src/postprocessing/postprocessing_utils_dcrdefs.o +0 -0
  429. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/.deps/.dirstamp +0 -0
  430. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/.deps/ext_preprocess.Plo +1656 -0
  431. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/.deps/raw2image.Plo +1659 -0
  432. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/.deps/subtract_black.Plo +1659 -0
  433. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/.dirstamp +0 -0
  434. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/ext_preprocess.cpp +127 -0
  435. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/ext_preprocess.lo +12 -0
  436. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/ext_preprocess.o +0 -0
  437. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/preprocessing_ph.cpp +24 -0
  438. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/raw2image.cpp +560 -0
  439. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/raw2image.lo +12 -0
  440. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/raw2image.o +0 -0
  441. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/subtract_black.cpp +91 -0
  442. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/subtract_black.lo +12 -0
  443. package/deps/LibRaw-Source/LibRaw-0.21.4/src/preprocessing/subtract_black.o +0 -0
  444. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/.deps/.dirstamp +0 -0
  445. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/.deps/cameralist.Plo +1659 -0
  446. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/.deps/colorconst.Plo +1659 -0
  447. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/.deps/colordata.Plo +1656 -0
  448. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/.deps/wblists.Plo +1656 -0
  449. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/.dirstamp +0 -0
  450. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/cameralist.cpp +1268 -0
  451. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/cameralist.lo +12 -0
  452. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/cameralist.o +0 -0
  453. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/colorconst.cpp +57 -0
  454. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/colorconst.lo +12 -0
  455. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/colorconst.o +0 -0
  456. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/colordata.cpp +1841 -0
  457. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/colordata.lo +12 -0
  458. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/colordata.o +0 -0
  459. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/wblists.cpp +217 -0
  460. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/wblists.lo +12 -0
  461. package/deps/LibRaw-Source/LibRaw-0.21.4/src/tables/wblists.o +0 -0
  462. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/.dirstamp +0 -0
  463. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/curves.Plo +1656 -0
  464. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/decoder_info.Plo +1659 -0
  465. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/init_close_utils.Plo +1659 -0
  466. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/open.Plo +1661 -0
  467. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/phaseone_processing.Plo +1659 -0
  468. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/read_utils.Plo +1656 -0
  469. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/thumb_utils.Plo +1659 -0
  470. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/utils_dcraw.Plo +1656 -0
  471. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.deps/utils_libraw.Plo +1659 -0
  472. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/.dirstamp +0 -0
  473. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/curves.cpp +154 -0
  474. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/curves.lo +12 -0
  475. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/curves.o +0 -0
  476. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/decoder_info.cpp +413 -0
  477. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/decoder_info.lo +12 -0
  478. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/decoder_info.o +0 -0
  479. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/init_close_utils.cpp +340 -0
  480. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/init_close_utils.lo +12 -0
  481. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/init_close_utils.o +0 -0
  482. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/open.cpp +1269 -0
  483. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/open.lo +12 -0
  484. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/open.o +0 -0
  485. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/phaseone_processing.cpp +101 -0
  486. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/phaseone_processing.lo +12 -0
  487. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/phaseone_processing.o +0 -0
  488. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/read_utils.cpp +176 -0
  489. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/read_utils.lo +12 -0
  490. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/read_utils.o +0 -0
  491. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/thumb_utils.cpp +338 -0
  492. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/thumb_utils.lo +12 -0
  493. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/thumb_utils.o +0 -0
  494. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/utils_dcraw.cpp +330 -0
  495. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/utils_dcraw.lo +12 -0
  496. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/utils_dcraw.o +0 -0
  497. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/utils_libraw.cpp +673 -0
  498. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/utils_libraw.lo +12 -0
  499. package/deps/LibRaw-Source/LibRaw-0.21.4/src/utils/utils_libraw.o +0 -0
  500. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/.deps/.dirstamp +0 -0
  501. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/.deps/apply_profile.Plo +1656 -0
  502. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/.deps/file_write.Plo +1656 -0
  503. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/.deps/tiff_writer.Plo +1659 -0
  504. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/.dirstamp +0 -0
  505. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/apply_profile.cpp +76 -0
  506. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/apply_profile.lo +12 -0
  507. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/apply_profile.o +0 -0
  508. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/file_write.cpp +338 -0
  509. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/file_write.lo +12 -0
  510. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/file_write.o +0 -0
  511. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/tiff_writer.cpp +73 -0
  512. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/tiff_writer.lo +12 -0
  513. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/tiff_writer.o +0 -0
  514. package/deps/LibRaw-Source/LibRaw-0.21.4/src/write/write_ph.cpp +39 -0
  515. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/.deps/.dirstamp +0 -0
  516. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/.deps/x3f_parse_process.Plo +1 -0
  517. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/.deps/x3f_utils_patched.Plo +1 -0
  518. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/.dirstamp +0 -0
  519. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/x3f_parse_process.cpp +708 -0
  520. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/x3f_parse_process.lo +12 -0
  521. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/x3f_parse_process.o +0 -0
  522. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/x3f_utils_patched.cpp +2119 -0
  523. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/x3f_utils_patched.lo +12 -0
  524. package/deps/LibRaw-Source/LibRaw-0.21.4/src/x3f/x3f_utils_patched.o +0 -0
  525. package/deps/LibRaw-Source/LibRaw-0.21.4/version.sh +16 -0
  526. package/lib/index.d.ts +671 -0
  527. package/lib/index.js +2292 -0
  528. package/package.json +134 -0
  529. package/prebuilds/darwin-arm64/librawspeed-full.node +0 -0
  530. package/scripts/build-libraw.sh +303 -0
  531. package/scripts/download-dependencies.sh +31 -0
  532. package/scripts/download-libraw.sh +30 -0
  533. package/scripts/generate-docs.js +590 -0
  534. package/scripts/merge-prebuilds.sh +40 -0
  535. package/scripts/prepare-libraw.js +132 -0
  536. package/scripts/publish.sh +84 -0
  537. package/scripts/setup-dev-env.sh +112 -0
  538. package/src/addon.cpp +8 -0
  539. package/src/libraw_wrapper.cpp +1370 -0
  540. package/src/libraw_wrapper.h +114 -0
  541. package/types/index.d.ts +152 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,1138 @@
1
+ # 更新日志
2
+
3
+ 此文件中记录了此项目的所有重要更改。
4
+
5
+ 格式基于 [Keep a Changelog](https://keepachangelog.com/en/1.0.8/),
6
+ 此项目遵循 [语义化版本控制](https://semver.org/spec/v2.0.0.html)。
7
+
8
+ # 更新日志
9
+
10
+ 此文件中记录了此项目的所有重要更改。
11
+
12
+ 格式基于 [Keep a Changelog](https://keepachangelog.com/en/1.0.8/),
13
+ 此项目遵循 [语义化版本控制](https://semver.org/spec/v2.0.0.html)。
14
+
15
+ ## [1.0.8] - 2025-08-30
16
+
17
+ ### 🎉 主要功能发布 - 缓冲区创建 API
18
+
19
+ 此版本引入了全面的缓冲区创建系统,能够为多种图像格式直接生成内存缓冲区,无需中间文件操作。这解决了基于流处理工作流程的核心需求。
20
+
21
+ ### ✨ 新增
22
+
23
+ #### 🔄 完整的缓冲区创建 API(7 个新方法)
24
+
25
+ - **直接内存缓冲区创建**
26
+
27
+ - `createJPEGBuffer(options)` - 具有质量、调整大小和渐进式选项的 JPEG 缓冲区
28
+ - `createPNGBuffer(options)` - 具有压缩级别和透明度的 PNG 缓冲区
29
+ - `createWebPBuffer(options)` - 具有有损/无损模式的现代 WebP 格式
30
+ - `createAVIFBuffer(options)` - 具有卓越压缩的下一代 AVIF 格式
31
+ - `createTIFFBuffer(options)` - 具有多种压缩选项的专业 TIFF 格式
32
+ - `createPPMBuffer()` - 最大兼容性的原始 PPM 格式
33
+ - `createThumbnailJPEGBuffer(options)` - 无需完整处理的快速缩略图提取
34
+
35
+ - **智能处理管道**
36
+ - 自动处理检测和缓存
37
+ - 多个格式创建的共享处理图像数据
38
+ - 内存高效的缓冲区生成
39
+ - 智能调整大小和质量优化
40
+
41
+ #### 🚀 高级图像处理功能
42
+
43
+ - **灵活的调整大小选项**
44
+
45
+ - 使用单维度保持宽高比
46
+ - 高质量的 Lanczos3 重采样
47
+ - 针对放大和缩小进行优化
48
+ - 自动尺寸计算
49
+
50
+ - **格式特定优化**
51
+
52
+ - **JPEG**: 渐进式编码、快速模式、质量优化
53
+ - **PNG**: 压缩级别 (0-9)、透明度保持
54
+ - **WebP**: 无损模式、工作量控制、快速压缩
55
+ - **AVIF**: 高级压缩、无损支持、质量调优
56
+ - **TIFF**: 多种压缩算法(无、LZW、ZIP)
57
+ - **PPM**: 用于处理管道的原始未压缩格式
58
+
59
+ - **性能优化**
60
+ - 并行缓冲区创建支持
61
+ - 处理图像的内存缓存
62
+ - 高效的 Sharp.js 集成
63
+ - 优化的内存管理和清理
64
+
65
+ #### 🧪 全面的缓冲区测试框架
66
+
67
+ - **完整测试套件** (`test/buffer-creation.test.js`)
68
+
69
+ - 所有 7 个缓冲区创建方法的详细测试
70
+ - 质量、压缩和调整大小参数验证
71
+ - 性能基准测试和并行创建测试
72
+ - 格式特定选项测试和边缘情况处理
73
+
74
+ - **快速验证** (`test/quick-buffer-verification.js`)
75
+
76
+ - 基本功能的快速冒烟测试
77
+ - 测试 JPEG、PNG、WebP 和缩略图创建
78
+ - 运行时:约 2-3 秒,包含输出文件生成
79
+
80
+ - **边缘情况测试** (`test/buffer-edge-cases.test.js`)
81
+
82
+ - 内存管理压力测试
83
+ - 极端参数验证
84
+ - 多个处理器实例
85
+ - 格式魔数验证
86
+
87
+ - **集成测试** (`test/buffer-integration.test.js`)
88
+
89
+ - Mocha/Chai 框架兼容性
90
+ - 适当的错误处理验证
91
+ - 参数边界测试
92
+ - 跨方法一致性检查
93
+
94
+ - **统一测试运行器** (`test/run-buffer-tests.js`)
95
+ - 带进度跟踪的彩色控制台输出
96
+ - 灵活的命令行选项(--quick-only、--comprehensive-only 等)
97
+ - 环境检查和验证
98
+ - 性能报告和统计
99
+
100
+ #### 📊 真实世界性能验证
101
+
102
+ - **缓冲区创建基准测试**(佳能 CR3 测试文件):
103
+
104
+ - **JPEG 缓冲区**: 34.7KB, 600x400 (255ms) - 优秀压缩
105
+ - **PNG 缓冲区**: 97.5KB, 500x333 (403ms) - 无损质量
106
+ - **WebP 缓冲区**: 15.9KB, 600x400 (87ms) - 卓越压缩/速度
107
+ - **AVIF 缓冲区**: 7.5KB, 500x333 (360ms) - 下一代压缩
108
+ - **TIFF 缓冲区**: 186.1KB, 400x267 (52ms) - 专业质量
109
+ - **缩略图缓冲区**: 8.5KB, 200x133 (76ms) - 快速提取
110
+
111
+ - **并行创建性能**
112
+ - 3 个格式在 274ms 内同时创建
113
+ - 缓冲区操作之间无内存干扰
114
+ - 并行生成的质量一致
115
+
116
+ #### 🛠️ 开发者工具和文档
117
+
118
+ - **缓冲区方法文档**
119
+
120
+ - `lib/index.d.ts` 中的完整 TypeScript 定义
121
+ - 所有结果对象的接口定义
122
+ - 参数类型验证和描述
123
+
124
+ - **使用示例和演示**
125
+
126
+ - `test/buffer-demo.js` - 所有方法的工作演示
127
+ - `test/final-buffer-test.js` - 综合验证脚本
128
+ - Web 应用程序和流工作流程的 API 使用示例
129
+
130
+ - **NPM 脚本集成**
131
+ - `npm run test:buffer-creation` - 运行综合缓冲区测试
132
+ - 与现有测试框架集成
133
+ - 具有灵活选项的命令行测试运行器
134
+
135
+ ### 🔧 技术实现
136
+
137
+ #### 📦 增强的依赖项集成
138
+
139
+ - **Sharp 0.33.5** 集成
140
+
141
+ - 用于缓冲区创建的高性能图像处理
142
+ - 原生 C++ 实现以获得最大速度
143
+ - 大图像的内存高效处理
144
+ - 跨平台兼容性(Windows、macOS、Linux)
145
+
146
+ - **无缝 LibRaw 集成**
147
+ - LibRaw 和 Sharp 之间的直接内存传输
148
+ - 自动位深度检测和转换
149
+ - 颜色空间保持和转换
150
+ - 带缓存的智能处理管道
151
+
152
+ #### ⚡ 性能特征
153
+
154
+ - **处理速度**: 图像处理 70-140 MB/s
155
+ - **缓冲区创建**: 50-800ms,取决于格式和大小
156
+ - **内存效率**: 带自动清理的流处理
157
+ - **压缩比**: 6x 到 500x,取决于格式和内容
158
+
159
+ #### 🎯 质量优化
160
+
161
+ - **颜色准确性**
162
+
163
+ - 从 RAW 到最终格式的正确颜色空间处理
164
+ - 白平衡和伽马校正保持
165
+ - 颜色矩阵转换支持
166
+
167
+ - **细节保持**
168
+ - 高质量重采样算法
169
+ - 边缘保持压缩
170
+ - 格式适当的优化
171
+
172
+ ### 🔧 API 增强
173
+
174
+ #### 新的 TypeScript 定义
175
+
176
+ ```typescript
177
+ interface LibRawBufferResult {
178
+ success: boolean;
179
+ buffer: Buffer;
180
+ metadata: {
181
+ format: string;
182
+ outputDimensions: { width: number; height: number };
183
+ fileSize: {
184
+ original: number;
185
+ compressed: number;
186
+ compressionRatio: string;
187
+ };
188
+ processing: {
189
+ timeMs: string;
190
+ throughputMBps: string;
191
+ };
192
+ options: object;
193
+ };
194
+ }
195
+
196
+ // 所有缓冲区创建方法的方法签名
197
+ async createJPEGBuffer(options?: JpegOptions): Promise<LibRawBufferResult>;
198
+ async createPNGBuffer(options?: PngOptions): Promise<LibRawBufferResult>;
199
+ async createWebPBuffer(options?: WebpOptions): Promise<LibRawBufferResult>;
200
+ async createAVIFBuffer(options?: AvifOptions): Promise<LibRawBufferResult>;
201
+ async createTIFFBuffer(options?: TiffOptions): Promise<LibRawBufferResult>;
202
+ async createPPMBuffer(): Promise<LibRawBufferResult>;
203
+ async createThumbnailJPEGBuffer(options?: ThumbnailOptions): Promise<LibRawBufferResult>;
204
+ ```
205
+
206
+ #### 一致的选项接口
207
+
208
+ - **质量设置**: 有损格式的 1-100 范围
209
+ - **调整大小选项**: 带自动宽高比的宽度/高度
210
+ - **压缩控制**: 格式特定的压缩参数
211
+ - **速度优化**: 时间关键应用程序的快速模式选项
212
+
213
+ ### 📋 使用示例
214
+
215
+ #### 基本缓冲区创建
216
+
217
+ ```javascript
218
+ const processor = new LibRaw();
219
+ await processor.loadFile("photo.cr2");
220
+ await processor.processImage();
221
+
222
+ // 创建不同格式的缓冲区
223
+ const jpegResult = await processor.createJPEGBuffer({
224
+ quality: 85,
225
+ width: 1200,
226
+ });
227
+ const webpResult = await processor.createWebPBuffer({
228
+ quality: 80,
229
+ width: 1200,
230
+ });
231
+
232
+ // 直接使用缓冲区 - 无需文件 I/O!
233
+ response.setHeader("Content-Type", "image/jpeg");
234
+ response.send(jpegResult.buffer);
235
+ ```
236
+
237
+ #### 并行多格式创建
238
+
239
+ ```javascript
240
+ // 同时生成多种格式
241
+ const [jpeg, png, webp, thumb] = await Promise.all([
242
+ processor.createJPEGBuffer({ quality: 85, width: 1920 }),
243
+ processor.createPNGBuffer({ width: 1200, compressionLevel: 6 }),
244
+ processor.createWebPBuffer({ quality: 80, width: 1920 }),
245
+ processor.createThumbnailJPEGBuffer({ maxSize: 300 }),
246
+ ]);
247
+
248
+ console.log(
249
+ `并行创建了 4 种格式: ${
250
+ jpeg.buffer.length +
251
+ png.buffer.length +
252
+ webp.buffer.length +
253
+ thumb.buffer.length
254
+ } 总字节数`
255
+ );
256
+ ```
257
+
258
+ #### Web API 集成
259
+
260
+ ```javascript
261
+ // Express.js API 端点
262
+ app.get("/api/photo/:id/formats", async (req, res) => {
263
+ const processor = new LibRaw();
264
+ try {
265
+ await processor.loadFile(`photos/${req.params.id}.cr2`);
266
+ await processor.processImage();
267
+
268
+ const formats = await Promise.all([
269
+ processor.createJPEGBuffer({ quality: 85, width: 1920 }),
270
+ processor.createWebPBuffer({ quality: 80, width: 1920 }),
271
+ processor.createThumbnailJPEGBuffer({ maxSize: 300 }),
272
+ ]);
273
+
274
+ res.json({
275
+ jpeg: formats[0].buffer.toString("base64"),
276
+ webp: formats[1].buffer.toString("base64"),
277
+ thumbnail: formats[2].buffer.toString("base64"),
278
+ });
279
+ } finally {
280
+ await processor.close();
281
+ }
282
+ });
283
+ ```
284
+
285
+ ### 🧪 测试和验证
286
+
287
+ #### 综合测试覆盖
288
+
289
+ - **格式验证**: 所有格式的魔数验证
290
+ - **质量测试**: 多个质量级别和压缩设置
291
+ - **调整大小测试**: 各种尺寸场景和宽高比保持
292
+ - **性能测试**: 速度和吞吐量测量
293
+ - **内存测试**: 泄漏检测和清理验证
294
+ - **错误处理**: 无效参数和边缘情况测试
295
+
296
+ #### 真实世界文件验证
297
+
298
+ - **相机兼容性**: 使用佳能 CR3、尼康 NEF、索尼 ARW 文件测试
299
+ - **文件大小范围**: 成功处理 20MB - 100MB RAW 文件
300
+ - **分辨率范围**: 高效处理 12MP - 61MP 图像
301
+ - **成功率**: 所有测试文件的缓冲区创建成功率为 100%
302
+
303
+ ### 🔧 测试命令
304
+
305
+ #### 快速测试
306
+
307
+ ```bash
308
+ # 快速验证所有缓冲区方法
309
+ node test/quick-buffer-verification.js
310
+
311
+ # 运行综合缓冲区测试套件
312
+ node test/run-buffer-tests.js
313
+
314
+ # 仅快速测试
315
+ node test/run-buffer-tests.js --quick-only
316
+ ```
317
+
318
+ #### 集成测试
319
+
320
+ ```bash
321
+ # 将缓冲区测试添加到现有测试套件
322
+ npm run test:buffer-creation
323
+
324
+ # 与其他测试一起运行
325
+ npm test
326
+ ```
327
+
328
+ #### 性能测试
329
+
330
+ ```bash
331
+ # 基准测试所有缓冲区创建方法
332
+ node test/run-buffer-tests.js --comprehensive-only
333
+
334
+ # 测试边缘情况和内存管理
335
+ node test/run-buffer-tests.js --edge-only
336
+ ```
337
+
338
+ ### 🚀 基于流的处理优势
339
+
340
+ 此版本直接解决了基于流处理的核心需求:
341
+
342
+ #### 之前(基于文件)
343
+
344
+ ```javascript
345
+ // 需要中间文件
346
+ await processor.writeTIFF("temp.tiff");
347
+ const buffer = fs.readFileSync("temp.tiff");
348
+ fs.unlinkSync("temp.tiff"); // 需要清理
349
+ ```
350
+
351
+ #### 之后(基于缓冲区)
352
+
353
+ ```javascript
354
+ // 直接缓冲区创建 - 无需文件
355
+ const result = await processor.createTIFFBuffer({ compression: "lzw" });
356
+ const buffer = result.buffer; // 立即可用
357
+ ```
358
+
359
+ #### 性能改进
360
+
361
+ - **快 50-80%**: 无磁盘 I/O 开销
362
+ - **更好的内存使用**: 无临时文件存储
363
+ - **更清洁的代码**: 无需文件清理
364
+ - **更可靠**: 无文件系统权限问题
365
+
366
+ ### 🐛 修复
367
+
368
+ #### 内存管理改进
369
+
370
+ - **缓冲区清理**: 自动清理中间缓冲区
371
+ - **内存泄漏预防**: 所有代码路径中的适当资源管理
372
+ - **错误恢复**: 优雅处理处理失败
373
+ - **资源优化**: 高效的内存分配模式
374
+
375
+ #### 格式兼容性增强
376
+
377
+ - **魔数验证**: 正确的格式头生成
378
+ - **颜色空间处理**: 准确的颜色空间保持
379
+ - **尺寸计算**: 正确的宽高比维护
380
+ - **质量一致性**: 多次创建的质量一致
381
+
382
+ ### 📈 性能影响
383
+
384
+ #### 速度改进
385
+
386
+ - **直接缓冲区创建**: 消除文件 I/O 瓶颈
387
+ - **并行处理**: 同时创建多种格式
388
+ - **内存效率**: 通过智能缓存减少内存占用
389
+ - **处理管道**: 使用共享处理数据优化工作流程
390
+
391
+ #### 质量增强
392
+
393
+ - **更好的压缩**: 每种输出类型的格式特定优化
394
+ - **颜色准确性**: 改进的颜色空间处理和维护
395
+ - **细节保持**: 高质量重采样和压缩
396
+ - **一致性**: 多次缓冲区创建的结果相同
397
+
398
+ ### 🔮 未来增强
399
+
400
+ #### 计划的缓冲区功能
401
+
402
+ - **高级选项**: HDR 处理、颜色分级、降噪
403
+ - **附加格式**: HEIF、BMP、TGA 支持
404
+ - **流支持**: 使用流接口处理大文件
405
+ - **GPU 加速**: 硬件加速的缓冲区创建
406
+
407
+ #### API 扩展
408
+
409
+ - **元数据保持**: 在输出缓冲区中嵌入 EXIF 数据
410
+ - **批量缓冲区创建**: 将多个文件处理为缓冲区
411
+ - **渐进式处理**: 处理过程中的实时缓冲区更新
412
+ - **自定义管道**: 用户定义的处理链
413
+
414
+ ---
415
+
416
+ ## [1.0.8-alpha.2] - 2025-08-24
417
+
418
+ ### 🎉 主要功能发布 - RAW 到 JPEG 转换
419
+
420
+ 此版本引入了完整的 RAW 到 JPEG 转换系统,具有高级优化选项、批量处理功能和智能设置分析。
421
+
422
+ ### ✨ 新增
423
+
424
+ #### 🖼️ 高性能 JPEG 转换引擎
425
+
426
+ - **高级 JPEG 转换** (`convertToJPEG()`)
427
+
428
+ - 使用 Sharp 库进行高质量 RAW 到 JPEG 转换
429
+ - 支持 1-100 质量级别,具有最佳压缩
430
+ - 多种颜色空间:sRGB、Rec2020、P3、CMYK
431
+ - 高级色度子采样选项(4:4:4、4:2:2、4:2:0)
432
+ - 渐进式 JPEG 支持,用于 Web 优化
433
+ - MozJPEG 编码器集成,提供卓越压缩
434
+
435
+ - **智能调整大小和缩放**
436
+
437
+ - 使用单维度规范保持宽高比
438
+ - 高质量 Lanczos3 重采样,获得清晰结果
439
+ - 针对放大和缩小进行优化
440
+ - 自动图像尺寸分析
441
+
442
+ - **压缩优化功能**
443
+ - 格子量化,提高压缩效率
444
+ - 霍夫曼编码优化
445
+ - 渐进式加载的扫描顺序优化
446
+ - 过冲去振铃,减少伪影
447
+ - 可自定义的质量曲线和伽马校正
448
+
449
+ #### 🚀 批量处理系统
450
+
451
+ - **批量转换** (`batchConvertToJPEG()`)
452
+
453
+ - 在单次操作中处理数百个 RAW 文件
454
+ - 并行处理以获得最大吞吐量
455
+ - 全面的错误处理和恢复
456
+ - 详细的进度报告和统计
457
+ - 自动输出目录管理
458
+
459
+ - **转换预设**
460
+ - **Web 优化**: 1920px, Q80, 渐进式, MozJPEG
461
+ - **打印质量**: 原始尺寸, Q95, 4:2:2 色度
462
+ - **存档**: 原始尺寸, Q98, 4:4:4 色度, 最高质量
463
+ - **缩略图**: 800px, Q85, 针对小尺寸优化
464
+
465
+ #### 🧠 AI 驱动的设置分析
466
+
467
+ - **最佳设置推荐** (`getOptimalJPEGSettings()`)
468
+
469
+ - 自动图像分析,获得最佳质量/大小平衡
470
+ - 使用特定优化(Web、打印、存档)
471
+ - 基于制造商的相机特定设置
472
+ - 基于分辨率的质量调整
473
+ - 智能色度子采样选择
474
+
475
+ - **图像分析引擎**
476
+ - 百万像素分类(高/中/低分辨率)
477
+ - 相机元数据集成,获得最佳设置
478
+ - 颜色空间分析和推荐
479
+ - 质量与文件大小优化
480
+
481
+ #### 📊 性能和监控
482
+
483
+ - **实时性能指标**
484
+
485
+ - 处理时间测量(亚毫秒精度)
486
+ - 吞吐量计算(MB/s、MP/s)
487
+ - 压缩比分析
488
+ - 文件大小前后比较
489
+ - 内存使用优化
490
+
491
+ - **综合报告**
492
+ - 带可视化分析的 HTML 报告生成
493
+ - 成功/失败率跟踪
494
+ - 处理时间分布分析
495
+ - 空间节省计算
496
+ - 性能基准测试
497
+
498
+ #### 🛠️ 开发者工具和脚本
499
+
500
+ - **批量转换脚本** (`scripts/batch-jpeg-conversion.js`)
501
+
502
+ - 批量处理的命令行界面
503
+ - 交互式预设选择
504
+ - HTML 报告生成
505
+ - 进度监控和错误报告
506
+
507
+ - **JPEG 转换示例** (`examples/jpeg-conversion-example.js`)
508
+
509
+ - 完整的使用演示
510
+ - 质量比较示例
511
+ - 调整大小和优化样本
512
+ - 最佳实践指导
513
+
514
+ - **综合测试套件** (`test/jpeg-conversion.test.js`)
515
+ - 质量级别验证(60-95% 范围)
516
+ - 调整大小选项测试
517
+ - 批量处理验证
518
+ - 优化功能测试
519
+ - 性能基准测试
520
+
521
+ ### 🔧 技术实现
522
+
523
+ #### 📦 依赖项和集成
524
+
525
+ - **Sharp 0.33.0** - 高性能图像处理
526
+
527
+ - 原生 C++ 实现以获得最大速度
528
+ - 带 MozJPEG 支持的高级 JPEG 编码
529
+ - 大图像的内存高效处理
530
+ - 跨平台兼容性(Windows、macOS、Linux)
531
+
532
+ - **增强的 LibRaw 集成**
533
+ - 与现有 RAW 处理管道的无缝集成
534
+ - LibRaw 和 Sharp 之间的内存高效数据传输
535
+ - 自动位深度检测和转换
536
+ - 颜色空间保持和转换
537
+
538
+ #### ⚡ 性能特征
539
+
540
+ - **处理速度**: 现代硬件上 70-140 MB/s 吞吐量
541
+ - **内存效率**: 大文件的流处理
542
+ - **压缩性能**: 典型的 2-10x 压缩比
543
+ - **质量保持**: Q85+ 设置下视觉无损
544
+
545
+ #### 🎯 质量优化
546
+
547
+ - **颜色准确性**
548
+
549
+ - 从 RAW 到 JPEG 的正确颜色空间处理
550
+ - 白平衡保持
551
+ - 伽马校正维护
552
+ - 颜色矩阵转换支持
553
+
554
+ - **细节保持**
555
+ - 高质量重采样算法
556
+ - 边缘保持压缩
557
+ - 降噪集成
558
+ - 锐化优化
559
+
560
+ ### 🔧 API 增强
561
+
562
+ #### 新的 TypeScript 定义
563
+
564
+ ```typescript
565
+ interface LibRawJPEGOptions {
566
+ quality?: number; // 1-100 JPEG quality
567
+ width?: number; // Target width
568
+ height?: number; // Target height
569
+ progressive?: boolean; // Progressive JPEG
570
+ mozjpeg?: boolean; // Use MozJPEG encoder
571
+ chromaSubsampling?: "4:4:4" | "4:2:2" | "4:2:0";
572
+ trellisQuantisation?: boolean; // Advanced compression
573
+ optimizeScans?: boolean; // Scan optimization
574
+ overshootDeringing?: boolean; // Artifact reduction
575
+ optimizeCoding?: boolean; // Huffman optimization
576
+ colorSpace?: "srgb" | "rec2020" | "p3" | "cmyk";
577
+ }
578
+
579
+ interface LibRawJPEGResult {
580
+ success: boolean;
581
+ outputPath: string;
582
+ metadata: {
583
+ originalDimensions: { width: number; height: number };
584
+ outputDimensions: { width: number; height: number };
585
+ fileSize: {
586
+ original: number;
587
+ compressed: number;
588
+ compressionRatio: string;
589
+ };
590
+ processing: { timeMs: string; throughputMBps: string };
591
+ jpegOptions: object;
592
+ };
593
+ }
594
+ ```
595
+
596
+ #### 增强的方法签名
597
+
598
+ ```javascript
599
+ // 基本 JPEG 转换
600
+ await processor.convertToJPEG(outputPath, options);
601
+
602
+ // 批量处理
603
+ await processor.batchConvertToJPEG(inputPaths, outputDir, options);
604
+
605
+ // 智能设置分析
606
+ await processor.getOptimalJPEGSettings({ usage: "web" });
607
+ ```
608
+
609
+ ### 📋 使用示例
610
+
611
+ #### 基本 JPEG 转换
612
+
613
+ ```javascript
614
+ const processor = new LibRaw();
615
+ await processor.loadFile("photo.cr2");
616
+
617
+ // 高质量转换
618
+ const result = await processor.convertToJPEG("output.jpg", {
619
+ quality: 90,
620
+ progressive: true,
621
+ mozjpeg: true,
622
+ });
623
+
624
+ console.log(`已保存: ${result.metadata.fileSize.compressed} 字节`);
625
+ console.log(`压缩: ${result.metadata.fileSize.compressionRatio}倍`);
626
+ ```
627
+
628
+ #### Web 优化批量处理
629
+
630
+ ```javascript
631
+ const result = await processor.batchConvertToJPEG(
632
+ ["photo1.cr2", "photo2.nef", "photo3.arw"],
633
+ "./web-gallery",
634
+ {
635
+ quality: 80,
636
+ width: 1920,
637
+ progressive: true,
638
+ mozjpeg: true,
639
+ }
640
+ );
641
+
642
+ console.log(`已处理: ${result.summary.processed}/${result.summary.total}`);
643
+ console.log(`节省空间: ${result.summary.totalSavedSpace}MB`);
644
+ ```
645
+
646
+ #### AI 优化设置
647
+
648
+ ```javascript
649
+ // 分析图像并获取推荐
650
+ const analysis = await processor.getOptimalJPEGSettings({ usage: "web" });
651
+
652
+ // 应用推荐设置
653
+ await processor.convertToJPEG("optimized.jpg", analysis.recommended);
654
+ ```
655
+
656
+ ### 🧪 测试和验证
657
+
658
+ #### 综合测试覆盖
659
+
660
+ - **质量验证**: 测试了 6 个质量级别(60-95%)
661
+ - **尺寸测试**: 验证了 5 个调整大小场景
662
+ - **批量处理**: 多文件转换测试
663
+ - **优化功能**: 测试了 8 个优化组合
664
+ - **性能基准测试**: 速度和吞吐量测量
665
+
666
+ #### 真实世界验证
667
+
668
+ - **相机兼容性**: 使用佳能、尼康、索尼、富士、松下、徕卡测试
669
+ - **文件大小范围**: 20MB - 100MB RAW 文件
670
+ - **分辨率范围**: 12MP - 61MP 图像
671
+ - **格式覆盖**: CR2、CR3、NEF、ARW、RAF、RW2、DNG
672
+
673
+ #### 性能基准测试
674
+
675
+ | 分辨率 | 质量 | 处理时间 | 吞吐量 | 压缩比 |
676
+ | ---------- | ------- | --------------- | ---------- | ----------- |
677
+ | 24MP | 80% | 1.2秒 | 85 MB/s | 8.5倍 |
678
+ | 42MP | 85% | 2.1秒 | 95 MB/s | 7.2倍 |
679
+ | 61MP | 90% | 3.2秒 | 110 MB/s | 6.1倍 |
680
+
681
+ ### 🔧 脚本和工具
682
+
683
+ #### NPM 脚本
684
+
685
+ ```bash
686
+ # 运行 JPEG 转换测试
687
+ npm run test:jpeg-conversion
688
+
689
+ # 批量转换 RAW 文件
690
+ npm run convert:jpeg <输入目录> [输出目录] [预设]
691
+
692
+ # 示例:Web 优化转换
693
+ npm run convert:jpeg ./raw-photos ./web-gallery 1
694
+ ```
695
+
696
+ #### 命令行工具
697
+
698
+ ```bash
699
+ # 基本转换示例
700
+ node examples/jpeg-conversion-example.js photo.cr2
701
+
702
+ # 使用预设的批量转换
703
+ node scripts/batch-jpeg-conversion.js ./photos ./output 2
704
+ ```
705
+
706
+ ### 🚀 性能优化
707
+
708
+ #### 内存管理
709
+
710
+ - **流处理**: 大文件分块处理
711
+ - **缓冲区重用**: 高效的内存分配模式
712
+ - **垃圾回收**: 中间缓冲区的自动清理
713
+ - **内存监控**: 实时内存使用跟踪
714
+
715
+ #### 处理管道
716
+
717
+ - **并行处理**: 多个文件并发处理
718
+ - **CPU 优化**: 编码的多核利用
719
+ - **I/O 优化**: 异步文件操作
720
+ - **缓存效率**: 最佳数据局部性模式
721
+
722
+ ### 🐛 修复
723
+
724
+ #### 稳定性改进
725
+
726
+ - **内存泄漏预防**: 所有代码路径中的适当缓冲区清理
727
+ - **错误恢复**: 优雅处理损坏或异常文件
728
+ - **资源管理**: 进程终止时的自动清理
729
+ - **线程安全**: LibRaw 实例的安全并发访问
730
+
731
+ #### 兼容性增强
732
+
733
+ - **Windows 平台**: 优化的文件路径处理和目录创建
734
+ - **大文件支持**: 改进 >100MB RAW 文件的处理
735
+ - **边缘情况**: 更好地支持异常相机格式
736
+ - **颜色空间处理**: 适当的 ICC 配置文件管理
737
+
738
+ ### 📈 性能影响
739
+
740
+ #### 速度改进
741
+
742
+ - **快 2 倍**: 与外部工具相比的 JPEG 转换
743
+ - **效率高 3 倍**: 内存使用优化
744
+ - **小 50%**: 同等质量的输出文件大小
745
+ - **快 10 倍**: 与顺序转换相比的批量处理
746
+
747
+ #### 质量增强
748
+
749
+ - **更好的压缩**: MozJPEG 编码器提供卓越压缩
750
+ - **颜色准确性**: 改进的颜色空间处理
751
+ - **细节保持**: 高级重采样算法
752
+ - **伪影减少**: 优化的量化和去振铃
753
+
754
+ ### 🔮 未来增强
755
+
756
+ #### 计划功能
757
+
758
+ - **WebP 转换**: 现代格式支持
759
+ - **AVIF 支持**: 下一代压缩
760
+ - **HDR 处理**: 增强的动态范围处理
761
+ - **GPU 加速**: CUDA/OpenCL 支持更快处理
762
+
763
+ #### API 扩展
764
+
765
+ - **元数据保持**: EXIF 数据传输到 JPEG
766
+ - **水印**: 内置水印应用
767
+ - **颜色分级**: 高级颜色校正工具
768
+ - **降噪**: AI 驱动的降噪
769
+
770
+ ---
771
+
772
+ ## [0.1.34-poc] - 2025-08-23
773
+
774
+ ### 🎉 主要发布 - 生产就绪的 LibRaw 包装器
775
+
776
+ 此版本代表了 LibRaw 库在 Node.js 中的完整、生产就绪实现,具有综合测试和完整的 API 覆盖。
777
+
778
+ ### ✨ 新增
779
+
780
+ #### 🔧 完整的 LibRaw API 实现(50+ 方法)
781
+
782
+ - **核心操作(10 个方法)**
783
+
784
+ - `loadFile()` - 从文件系统加载 RAW 文件
785
+ - `loadBuffer()` - 从内存缓冲区加载 RAW 数据
786
+ - `close()` - 清理和资源管理
787
+ - `raw2Image()` - 将 RAW 数据转换为可处理图像
788
+ - `processImage()` - 应用处理管道
789
+ - `subtractBlack()` - 黑电平减法
790
+ - `adjustMaximum()` - 调整最大值
791
+ - `unpack()` - 低级 RAW 数据解包
792
+ - `unpackThumbnail()` - 提取缩略图数据
793
+ - `freeImage()` - 释放处理图像内存
794
+
795
+ - **元数据和信息(12 个方法)**
796
+
797
+ - `getMetadata()` - 基本相机和图像元数据
798
+ - `getImageSize()` - 详细尺寸信息
799
+ - `getFileInfo()` - 文件特定信息
800
+ - `getAdvancedMetadata()` - 带颜色信息的扩展元数据
801
+ - `getLensInfo()` - 镜头信息和规格
802
+ - `getColorInfo()` - 颜色空间和校准数据
803
+ - `getCameraColorMatrix()` - 相机颜色变换矩阵
804
+ - `getRGBCameraMatrix()` - RGB 颜色变换矩阵
805
+ - `getDecoderInfo()` - RAW 解码器信息
806
+ - `checkLoaded()` - 验证文件加载状态
807
+ - `getLastError()` - 错误消息检索
808
+ - `errorCount()` - 处理错误计数
809
+
810
+ - **图像处理(8 个方法)**
811
+
812
+ - `createMemoryImage()` - 在内存中生成处理图像
813
+ - `createMemoryThumbnail()` - 在内存中生成缩略图
814
+ - `getMemImageFormat()` - 内存图像格式信息
815
+ - `copyMemImage()` - 将图像数据复制到缓冲区
816
+ - `adjustSizesInfoOnly()` - 不进行处理的尺寸调整
817
+ - `raw2ImageEx()` - 扩展的 RAW 到图像转换
818
+ - `convertFloatToInt()` - 浮点转换
819
+ - `getMemoryRequirements()` - 内存使用估算
820
+
821
+ - **文件写入器(6 个方法)**
822
+
823
+ - `writePPM()` - 导出到 PPM 格式
824
+ - `writeTIFF()` - 导出到 TIFF 格式
825
+ - `writeThumbnail()` - 将缩略图导出为 JPEG
826
+ - 格式验证和质量控制
827
+ - 自动目录创建
828
+ - 写入操作的错误处理
829
+
830
+ - **配置(4 个方法)**
831
+
832
+ - `setOutputParams()` - 配置处理参数
833
+ - `getOutputParams()` - 检索当前参数
834
+ - 颜色空间选择(Raw、sRGB、Adobe RGB、Wide Gamut、ProPhoto、XYZ)
835
+ - 位深度控制(8位、16位)
836
+ - 伽马校正和亮度调整
837
+
838
+ - **扩展工具(8 个方法)**
839
+
840
+ - `isFloatingPoint()` - 检查浮点数据
841
+ - `isFujiRotated()` - 检测富士传感器旋转
842
+ - `isSRAW()` - 检测 sRAW 格式
843
+ - `isJPEGThumb()` - 检查缩略图格式
844
+ - `isNikonSRAW()` - 尼康 sRAW 检测
845
+ - `isCoolscanNEF()` - Coolscan NEF 检测
846
+ - `haveFPData()` - 浮点数据可用性
847
+ - `srawMidpoint()` - sRAW 中点计算
848
+
849
+ - **颜色操作(3 个方法)**
850
+
851
+ - `getColorAt()` - 获取特定位置的颜色值
852
+ - `getWhiteBalance()` - 白平衡乘数
853
+ - `setBayerPattern()` - 设置颜色滤镜模式
854
+
855
+ - **静态方法(4 个方法)**
856
+ - `LibRaw.getVersion()` - 库版本信息
857
+ - `LibRaw.getCapabilities()` - 库功能位掩码
858
+ - `LibRaw.getCameraList()` - 支持的相机型号列表
859
+ - `LibRaw.getCameraCount()` - 支持的相机数量
860
+
861
+ #### 🧪 综合测试框架
862
+
863
+ - **图像处理测试套件** (`test/image-processing.test.js`)
864
+
865
+ - 缩略图提取验证(100% 成功率)
866
+ - 图像转换工作流程测试
867
+ - 高级处理功能验证
868
+ - 参数配置测试
869
+ - 内存操作验证
870
+
871
+ - **格式转换测试套件** (`test/format-conversion.test.js`)
872
+
873
+ - 输出格式验证(PPM、TIFF)
874
+ - 颜色空间转换测试(6 个颜色空间)
875
+ - 位深度处理(8位、16位)
876
+ - 质量设置验证
877
+ - 格式头验证
878
+
879
+ - **缩略图提取测试套件** (`test/thumbnail-extraction.test.js`)
880
+
881
+ - 跨格式缩略图检测
882
+ - 提取方法验证
883
+ - 格式分析(JPEG、TIFF、PNG、Raw RGB)
884
+ - 性能测量
885
+ - 数据完整性验证
886
+
887
+ - **综合测试运行器** (`test/comprehensive.test.js`)
888
+ - 集成测试执行
889
+ - 真实世界文件处理
890
+ - 跨格式验证
891
+ - 性能基准测试
892
+
893
+ #### 🖼️ 高级缩略图提取
894
+
895
+ - **批量提取脚本** (`scripts/extract-thumbnails.js`)
896
+
897
+ - 所有 RAW 文件的自动化处理
898
+ - 高质量缩略图保持
899
+ - 支持 6+ 个相机品牌
900
+ - 交互式画廊生成
901
+ - 综合报告
902
+
903
+ - **交互式画廊查看器** (`sample-images/thumbnails/index.html`)
904
+ - 响应式 Web 界面
905
+ - 相机品牌过滤
906
+ - 文件大小统计
907
+ - 缩略图预览网格
908
+ - 格式识别
909
+
910
+ #### 📊 真实世界验证
911
+
912
+ - **测试了 21 个 RAW 文件**,涵盖主要相机品牌:
913
+
914
+ - 佳能 CR3(3 个文件)- 2.4-2.6 MB 缩略图
915
+ - 尼康 NEF(6 个文件)- 1.1-1.9 MB 缩略图
916
+ - 索尼 ARW(3 个文件)- 1.4-6.0 MB 缩略图
917
+ - 富士 RAF(3 个文件)- 2.9-5.5 MB 缩略图
918
+ - 松下 RW2(3 个文件)- 380KB-1MB 缩略图
919
+ - 徕卡 DNG(3 个文件)- 8.3-13.4 MB 缩略图
920
+
921
+ - **性能基准测试**
922
+ - 文件加载: 15-30ms(800MB/s+ 吞吐量)
923
+ - 元数据提取: 1-5ms
924
+ - 缩略图提取: 20-50ms(400KB/s+ 吞吐量)
925
+ - 图像处理: 1000-2000ms(70-140MB/s 吞吐量)
926
+ - 内存效率: 未检测到泄漏
927
+
928
+ #### 🛠️ 开发者体验
929
+
930
+ - **npm 脚本**用于常见操作
931
+
932
+ - `npm run extract:thumbnails` - 批量缩略图提取
933
+ - `npm run test:image-processing` - 图像转换测试
934
+ - `npm run test:format-conversion` - 格式验证测试
935
+ - `npm run test:thumbnail-extraction` - 缩略图操作测试
936
+ - `npm run test:comprehensive` - 完整测试套件
937
+
938
+ - **文档** (`docs/TESTING.md`)
939
+ - 综合测试指南
940
+ - 性能指标
941
+ - 故障排除信息
942
+ - 扩展指南
943
+
944
+ ### 🔧 更改
945
+
946
+ #### 增强的 API 接口
947
+
948
+ - **改进的错误处理**,涵盖所有方法
949
+ - **一致的基于 Promise 的 API**,用于所有操作
950
+ - **更好的内存管理**,带自动清理
951
+ - **增强的参数验证**,用于所有输入
952
+
953
+ #### 性能优化
954
+
955
+ - **优化的内存使用**,用于大文件
956
+ - **更快的元数据提取**(亚 5ms)
957
+ - **高效的缩略图处理**管道
958
+ - **资源清理**改进
959
+
960
+ ### 🐛 修复
961
+
962
+ #### 稳定性改进
963
+
964
+ - **内存泄漏预防**,在所有处理路径中
965
+ - **错误处理**,用于损坏文件
966
+ - **资源清理**,在错误条件下
967
+ - **线程安全**改进
968
+
969
+ #### 兼容性修复
970
+
971
+ - **Windows 平台**优化和测试
972
+ - **大文件处理**(>100MB RAW 文件)
973
+ - **多格式支持**验证
974
+ - **边缘情况处理**,用于异常文件
975
+
976
+ ### 📋 测试结果
977
+
978
+ #### 测试覆盖摘要
979
+
980
+ - **✅ 100% 缩略图提取**成功率(21/21 文件)
981
+ - **✅ 95%+ 图像处理**成功率
982
+ - **✅ 100% 元数据提取**,跨所有格式
983
+ - **✅ 0 内存泄漏**在综合测试中检测到
984
+ - **✅ 6 个相机品牌**在生产中验证
985
+
986
+ #### 性能指标
987
+
988
+ | 操作 | 文件大小 | 时间 | 吞吐量 | 成功率 |
989
+ | ------------ | --------- | ------- | ---------- | ------- |
990
+ | 文件加载 | 25MB | 15-30ms | 800MB/s+ | 100% |
991
+ | 元数据 | 任意 | 1-5ms | - | 100% |
992
+ | 缩略图 | 可变 | 20-50ms | 400KB/s+ | 100% |
993
+ | 处理 | 6K×4K | 1-2秒 | 70-140MB/s | 95%+ |
994
+
995
+ ### 🚀 生产就绪
996
+
997
+ 此版本标志着从概念验证到生产就绪的过渡:
998
+
999
+ - **✅ 完整的 API 实现** - 所有主要 LibRaw 功能
1000
+ - **✅ 综合测试** - 真实世界文件验证
1001
+ - **✅ 内存安全** - 无泄漏,适当清理
1002
+ - **✅ 错误处理** - 优雅的失败管理
1003
+ - **✅ 性能验证** - 基准测试操作
1004
+ - **✅ 文档** - 完整的使用指南
1005
+
1006
+ ### 📦 依赖项
1007
+
1008
+ - **LibRaw 0.21.4** - 核心 RAW 处理库
1009
+ - **Node-API 7.0.0** - 原生插件接口
1010
+ - **node-gyp 10.0.0** - 构建系统
1011
+
1012
+ ### 🎯 兼容性
1013
+
1014
+ - **Node.js** 14.0.0 或更高版本
1015
+ - **平台** Windows(已测试)、macOS、Linux
1016
+ - **架构** x64(已测试)、ARM64
1017
+
1018
+ ---
1019
+
1020
+ ## [0.1.33] - 2025-08-22
1021
+
1022
+ ### 🔧 新增
1023
+
1024
+ - 初始 LibRaw 包装器实现
1025
+ - 基本元数据提取
1026
+ - 文件加载功能
1027
+ - 内存管理框架
1028
+
1029
+ ### 🐛 修复
1030
+
1031
+ - 构建系统配置
1032
+ - 原生模块加载
1033
+ - 基本错误处理
1034
+
1035
+ ---
1036
+
1037
+ ## [0.1.32] - 2025-08-21
1038
+
1039
+ ### 🎉 新增
1040
+
1041
+ - 项目初始化
1042
+ - LibRaw 库集成
1043
+ - 基本 Node.js 插件结构
1044
+ - 构建配置
1045
+
1046
+ ---
1047
+
1048
+ ## 升级指南
1049
+
1050
+ ### 从 0.1.33 到 0.1.34-poc
1051
+
1052
+ 这是一个具有重要新功能的主要升级:
1053
+
1054
+ #### 可用的新功能
1055
+
1056
+ ```javascript
1057
+ // 缩略图提取(新功能!)
1058
+ const hasThumb = await processor.thumbOK();
1059
+ if (hasThumb) {
1060
+ await processor.unpackThumbnail();
1061
+ const thumbData = await processor.createMemoryThumbnail();
1062
+ await processor.writeThumbnail("thumb.jpg");
1063
+ }
1064
+
1065
+ // 高级元数据(增强!)
1066
+ const advanced = await processor.getAdvancedMetadata();
1067
+ const lens = await processor.getLensInfo();
1068
+ const color = await processor.getColorInfo();
1069
+
1070
+ // 批量缩略图提取(新功能!)
1071
+ // npm run extract:thumbnails
1072
+ ```
1073
+
1074
+ #### 测试功能
1075
+
1076
+ ```bash
1077
+ # 新的综合测试套件
1078
+ npm run test:image-processing
1079
+ npm run test:format-conversion
1080
+ npm run test:thumbnail-extraction
1081
+ npm run test:comprehensive
1082
+ ```
1083
+
1084
+ #### 无破坏性更改
1085
+
1086
+ 所有现有 API 保持兼容。新功能是附加的。
1087
+
1088
+ ---
1089
+
1090
+ ## 安全
1091
+
1092
+ - **内存安全**: 所有缓冲区操作都进行边界检查
1093
+ - **资源管理**: 自动清理防止资源泄漏
1094
+ - **错误处理**: 优雅失败,无崩溃
1095
+ - **输入验证**: 所有文件输入在处理前都经过验证
1096
+
1097
+ ---
1098
+
1099
+ ## 性能说明
1100
+
1101
+ ### 优化建议
1102
+
1103
+ - 使用 `createMemoryImage()` 进行内存处理
1104
+ - 及时调用 `close()` 释放资源
1105
+ - 尽可能在处理完整图像前处理缩略图
1106
+ - 根据需要使用适当的位深度(8位 vs 16位)
1107
+
1108
+ ### 基准测试
1109
+
1110
+ 运行性能测试套件在您的系统上验证:
1111
+
1112
+ ```bash
1113
+ npm run test:performance
1114
+ ```
1115
+
1116
+ ---
1117
+
1118
+ ## 贡献
1119
+
1120
+ ### 添加新功能
1121
+
1122
+ 1. 在 C++ 中实现 (`src/libraw_wrapper.cpp`)
1123
+ 2. 添加 JavaScript 包装器 (`lib/index.js`)
1124
+ 3. 在适当的测试套件中创建测试
1125
+ 4. 更新文档
1126
+ 5. 添加到此更新日志
1127
+
1128
+ ### 测试指南
1129
+
1130
+ - 所有新功能必须有测试覆盖
1131
+ - 使用多个相机品牌测试
1132
+ - 验证内存使用
1133
+ - 包含性能基准测试
1134
+
1135
+ ---
1136
+
1137
+ **有关详细 API 文档,请参阅 [README.md](README.md)**
1138
+ **有关测试信息,请参阅 [docs/TESTING.md](docs/TESTING.md)**