imagescript 1.3.1 → 3.1.0

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 (132) hide show
  1. package/LICENSE +4 -1
  2. package/README.md +76 -26
  3. package/THIRD_PARTY_NOTICES.md +156 -0
  4. package/dist/animation.d.ts +55 -0
  5. package/dist/animation.js +167 -0
  6. package/dist/codecs/crc.d.ts +9 -0
  7. package/dist/codecs/crc.js +29 -0
  8. package/dist/codecs/exif.d.ts +11 -0
  9. package/dist/codecs/exif.js +27 -0
  10. package/dist/codecs/gif.d.ts +44 -0
  11. package/dist/codecs/gif.js +401 -0
  12. package/dist/codecs/jpeg.d.ts +35 -0
  13. package/dist/codecs/jpeg.js +980 -0
  14. package/dist/codecs/png.d.ts +97 -0
  15. package/dist/codecs/png.js +664 -0
  16. package/dist/codecs/quantize.d.ts +25 -0
  17. package/dist/codecs/quantize.js +302 -0
  18. package/dist/codecs/tga.d.ts +16 -0
  19. package/dist/codecs/tga.js +203 -0
  20. package/dist/codecs/tiff.d.ts +6 -0
  21. package/dist/codecs/tiff.js +546 -0
  22. package/dist/codecs/vp8-tables.d.ts +10 -0
  23. package/dist/codecs/vp8-tables.js +17 -0
  24. package/dist/codecs/vp8.d.ts +8 -0
  25. package/dist/codecs/vp8.js +711 -0
  26. package/dist/codecs/vp8l.d.ts +62 -0
  27. package/dist/codecs/vp8l.js +909 -0
  28. package/dist/codecs/webp.d.ts +67 -0
  29. package/dist/codecs/webp.js +280 -0
  30. package/dist/codecs/zlib.d.ts +22 -0
  31. package/dist/codecs/zlib.js +607 -0
  32. package/dist/frame.d.ts +57 -0
  33. package/dist/frame.js +65 -0
  34. package/dist/gif.d.ts +31 -0
  35. package/dist/gif.js +20 -0
  36. package/dist/image-type.d.ts +24 -0
  37. package/dist/image-type.js +64 -0
  38. package/dist/image.d.ts +553 -0
  39. package/dist/image.js +1156 -0
  40. package/dist/index.d.ts +23 -0
  41. package/dist/index.js +20 -0
  42. package/dist/package.json +1 -0
  43. package/dist/render/font.d.ts +92 -0
  44. package/dist/render/font.js +954 -0
  45. package/dist/render/hinting.d.ts +110 -0
  46. package/dist/render/hinting.js +1236 -0
  47. package/dist/render/svg.d.ts +11 -0
  48. package/dist/render/svg.js +1717 -0
  49. package/dist/render/text.d.ts +63 -0
  50. package/dist/render/text.js +342 -0
  51. package/dist/text-layout.d.ts +46 -0
  52. package/dist/text-layout.js +35 -0
  53. package/dist/util/blur.d.ts +13 -0
  54. package/dist/util/blur.js +146 -0
  55. package/dist/util/mem.d.ts +10 -0
  56. package/dist/util/mem.js +23 -0
  57. package/dist/util/resample.d.ts +12 -0
  58. package/dist/util/resample.js +99 -0
  59. package/dist/util/utf8.d.ts +5 -0
  60. package/dist/util/utf8.js +55 -0
  61. package/dist/version.d.ts +1 -0
  62. package/dist/version.js +1 -0
  63. package/licenses/Apache-2.0.txt +202 -0
  64. package/licenses/FTL.txt +169 -0
  65. package/licenses/README.ijg +260 -0
  66. package/package.json +31 -7
  67. package/ImageScript.d.ts +0 -954
  68. package/ImageScript.js +0 -1669
  69. package/bench/_.mjs +0 -166
  70. package/bench/all.mjs +0 -4
  71. package/bench/blur.mjs +0 -59
  72. package/bench/flip.mjs +0 -63
  73. package/bench/overlay.mjs +0 -35
  74. package/bench/package.json +0 -7
  75. package/bench/readme.md +0 -64
  76. package/bench/resize.mjs +0 -52
  77. package/codecs/LICENSE +0 -21
  78. package/codecs/lib.d.ts +0 -50
  79. package/codecs/lib.js +0 -6
  80. package/codecs/lib.mjs +0 -1
  81. package/codecs/node/bin/arm64-darwin.node +0 -0
  82. package/codecs/node/bin/arm64-linux.node +0 -0
  83. package/codecs/node/bin/x64-darwin.node +0 -0
  84. package/codecs/node/bin/x64-linux.node +0 -0
  85. package/codecs/node/bin/x64-win32.node +0 -0
  86. package/codecs/node/index.js +0 -3
  87. package/codecs/node/index.mjs +0 -6
  88. package/codecs/package.json +0 -14
  89. package/codecs/readme.md +0 -38
  90. package/codecs/wasm/bin/codecs.wasm +0 -0
  91. package/codecs/wasm/bin/simd.wasm +0 -0
  92. package/codecs/wasm/bundle/browser.js +0 -1
  93. package/codecs/wasm/index.js +0 -1
  94. package/codecs/wasm/index.mjs +0 -1
  95. package/png/README.md +0 -1
  96. package/png/node.js +0 -1137
  97. package/png/src/crc.mjs +0 -49
  98. package/png/src/mem.mjs +0 -24
  99. package/png/src/png.mjs +0 -254
  100. package/png/src/zlib.mjs +0 -618
  101. package/tsconfig.json +0 -21
  102. package/utils/mem.js +0 -26
  103. package/v2/codecs/magic.js +0 -25
  104. package/v2/framebuffer.d.ts +0 -67
  105. package/v2/framebuffer.js +0 -2352
  106. package/v2/framebuffer.mjs +0 -126
  107. package/v2/framebuffer.rs +0 -1264
  108. package/v2/index.d.ts +0 -84
  109. package/v2/index.js +0 -261
  110. package/v2/ops/blur.mjs +0 -303
  111. package/v2/ops/color.mjs +0 -277
  112. package/v2/ops/crop.mjs +0 -64
  113. package/v2/ops/fill.mjs +0 -33
  114. package/v2/ops/flip.mjs +0 -33
  115. package/v2/ops/index.mjs +0 -9
  116. package/v2/ops/iterator.mjs +0 -34
  117. package/v2/ops/overlay.mjs +0 -63
  118. package/v2/ops/resize.mjs +0 -166
  119. package/v2/ops/rotate.mjs +0 -117
  120. package/v2/util/mem.mjs +0 -24
  121. package/wasm/any/font.wasm +0 -0
  122. package/wasm/any/gif.wasm +0 -0
  123. package/wasm/any/jpeg.wasm +0 -0
  124. package/wasm/any/png.wasm +0 -0
  125. package/wasm/any/svg.wasm +0 -0
  126. package/wasm/any/tiff.wasm +0 -0
  127. package/wasm/node/font.js +0 -142
  128. package/wasm/node/gif.js +0 -76
  129. package/wasm/node/jpeg.js +0 -92
  130. package/wasm/node/png.js +0 -49
  131. package/wasm/node/svg.js +0 -56
  132. package/wasm/node/tiff.js +0 -47
@@ -0,0 +1,97 @@
1
+ export interface EncodeOptions {
2
+ /** tEXt chunks, empty values are skipped */
3
+ text?: Record<string, string | undefined>;
4
+ width: number;
5
+ height: number;
6
+ channels: number;
7
+ depth?: number;
8
+ level?: number;
9
+ /** packed RGB palette, makes the data palette indices (1 channel) */
10
+ palette?: Uint8Array;
11
+ /** alpha per palette entry */
12
+ transparency?: Uint8Array;
13
+ /** whether to paeth filter the rows (pays off for truecolor and greyscale images) */
14
+ filter?: boolean;
15
+ }
16
+ export interface Decoded {
17
+ width: number;
18
+ height: number;
19
+ /** 8-bit RGBA */
20
+ pixels: Uint8Array;
21
+ /** Exif orientation (1-8) */
22
+ orientation: number;
23
+ }
24
+ /**
25
+ * Encodes raw pixel data into a PNG
26
+ * @param data Raw pixel data, rows packed MSB first for depths below 8
27
+ */
28
+ export declare function encode(data: Uint8Array, { text, width, height, channels, depth, level, palette, transparency, filter: filterRows }: EncodeOptions): Promise<Uint8Array>;
29
+ /**
30
+ * Encodes 8-bit RGBA pixels into a PNG with the smallest lossless color type (see {@link pixelFormat}).
31
+ * Rows of non-palette images are paeth filtered (unless the data isn't compressed), palette indices aren't
32
+ * filtered (like libpng recommends)
33
+ */
34
+ export declare function encodeRGBA(rgba: Uint8Array, width: number, height: number, level: number, text?: EncodeOptions['text']): Promise<Uint8Array>;
35
+ export interface APNGEncodeFrame {
36
+ x: number;
37
+ y: number;
38
+ width: number;
39
+ height: number;
40
+ /** milliseconds (stored as a fraction of up to 65535/65535 seconds) */
41
+ duration: number;
42
+ /** 0 none, 1 background (transparent), 2 previous */
43
+ dispose: number;
44
+ /** RGBA */
45
+ pixels: Uint8Array;
46
+ }
47
+ /**
48
+ * Encodes frames into an APNG. Frames are alpha blended onto the canvas ("over"); the first frame is also the
49
+ * default image that viewers without APNG support show
50
+ * @param plays How often to play the animation, 0 = forever
51
+ */
52
+ export declare function encodeAnimation(frames: APNGEncodeFrame[], width: number, height: number, plays: number, level: number): Promise<Uint8Array>;
53
+ /**
54
+ * Decodes a PNG into 8-bit RGBA pixel data (for APNGs, the default image)
55
+ * Supports all color types, bit depths, tRNS transparency and adam7 interlacing
56
+ * The orientation comes from the eXIf chunk, or, if there is none, from the Exif text ImageMagick wrote before eXIf
57
+ * existed ("Raw profile type exif") or from the XMP packet
58
+ */
59
+ export declare function decode(array: Uint8Array): Promise<Decoded>;
60
+ export interface APNGFrame {
61
+ x: number;
62
+ y: number;
63
+ width: number;
64
+ height: number;
65
+ /** milliseconds */
66
+ duration: number;
67
+ /** 0 none, 1 background (transparent), 2 previous */
68
+ dispose: number;
69
+ /** 0 source (replace), 1 over */
70
+ blend: number;
71
+ pixels: Uint8Array;
72
+ }
73
+ /** Whether the PNG is an APNG (has an acTL chunk) */
74
+ export declare function isAnimated(array: Uint8Array): boolean;
75
+ /**
76
+ * Decodes an APNG (https://wiki.mozilla.org/APNG_Specification) into its (uncomposited) frames; a plain PNG becomes
77
+ * a single frame
78
+ * @return plays: 0 = forever
79
+ */
80
+ export declare function decodeAnimation(array: Uint8Array, onlyFirstFrame?: boolean): Promise<{
81
+ width: number;
82
+ height: number;
83
+ plays: number;
84
+ frames: APNGFrame[];
85
+ }>;
86
+ /**
87
+ * Composites APNG frames onto the canvas, as the APNG specification describes (the integer "over" operation of its
88
+ * blend_op section, https://wiki.mozilla.org/APNG_Specification)
89
+ */
90
+ export declare function compositeAnimation({ width, height, frames }: {
91
+ width: number;
92
+ height: number;
93
+ frames: APNGFrame[];
94
+ }): Array<{
95
+ pixels: Uint8Array;
96
+ duration: number;
97
+ }>;