{"_id":"rastermill","_rev":"7-e2da2e9d994d7ee617ef308c8e6a1c9c","name":"rastermill","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"rastermill","version":"0.1.0","keywords":["image","resize","jpeg","png","webp","heic","avif","photon"],"license":"MIT","_id":"rastermill@0.1.0","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://github.com/openclaw/rastermill#readme","bugs":{"url":"https://github.com/openclaw/rastermill/issues"},"dist":{"shasum":"c4f326a357e48d7a62476767337ff448673a4050","tarball":"https://registry.npmjs.org/rastermill/-/rastermill-0.1.0.tgz","fileCount":7,"integrity":"sha512-ovbl5jVRMc0LnzktQMU13Nz5c9iPbHi9PoT4hG8qiyOGVM6a20I6N2TtaFJv40B38LLF29luN/E8NmNIXk7lCg==","signatures":[{"sig":"MEQCIEoUpTLc9xrONf9Jel20Whk+wm8MxoVGhAtOSJtaJNotAiAx8b/1FjUSxbMgo4zRh3KFmiLn1U0VVAOQCvVU6ck3qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118757},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"4be8e0e528cc04436fed921e33c9c036319b4f16","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"pnpm build","prepare":"pnpm build","prepublishOnly":"pnpm check && pnpm test && pnpm build"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/openclaw/rastermill.git","type":"git"},"_npmVersion":"11.14.1","description":"Fast, portable image processing for Node agents.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@silvia-odwyer/photon-node":"0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.3","devDependencies":{"vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^22.15.30"},"_npmOperationalInternal":{"tmp":"tmp/rastermill_0.1.0_1779737348418_0.4248670137517052","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"rastermill","version":"0.2.0","keywords":["image","resize","jpeg","png","webp","heic","photon"],"license":"MIT","_id":"rastermill@0.2.0","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://rastermill.com/","bugs":{"url":"https://github.com/openclaw/rastermill/issues"},"dist":{"shasum":"51f7c659cbfb59faae3c379d600c158ec8367e95","tarball":"https://registry.npmjs.org/rastermill/-/rastermill-0.2.0.tgz","fileCount":7,"integrity":"sha512-Uc3oKCF4v+sh8OznkG5P6wzQQUstZI/dEGubjNXfWqmCn6iMEAVz8V8S3SVJf+lfQsGpL9iIjBOECmt2ernOAA==","signatures":[{"sig":"MEYCIQDZLCLW+kWA5eHZEAd6LG6+yXEg8EYDfIZBEE99EzB9gQIhANetyNXZEhruvaZ08yGMrqCNbtwIGqxVf8plce/BkBnU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":145457},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"cef6808dd19e068e5c103a882df64bf61bd7273a","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"pnpm build","prepare":"pnpm build","docs:build":"node scripts/build-docs-site.mjs","docs:check":"pnpm docs:build && git diff --exit-code -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt && test -z \"$(git ls-files --others --exclude-standard -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt)\"","prepublishOnly":"pnpm check && pnpm test && pnpm build"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/openclaw/rastermill.git","type":"git"},"_npmVersion":"11.12.1","description":"Fast, portable image processing for Node agents.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"@silvia-odwyer/photon-node":"0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.3","devDependencies":{"vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^22.15.30"},"_npmOperationalInternal":{"tmp":"tmp/rastermill_0.2.0_1779758749194_0.8421834803836883","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"rastermill","version":"0.3.0","keywords":["image","resize","jpeg","png","webp","heic","photon"],"license":"MIT","_id":"rastermill@0.3.0","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://rastermill.com/","bugs":{"url":"https://github.com/openclaw/rastermill/issues"},"dist":{"shasum":"30c86991236e5db7887a7bb08be724ab2ef5e8ab","tarball":"https://registry.npmjs.org/rastermill/-/rastermill-0.3.0.tgz","fileCount":7,"integrity":"sha512-4g2i0I7M5sba//lFBh19Wi0hDGw8o+isnt/BtEyqQXIZaYclhcNBwL/Fw/6gDCp7aaLwQHADuUvyHCB0Oat5Vw==","signatures":[{"sig":"MEQCIDSw6mFfq/CLnBgzcJyjU1J7MhrTL0b2/RG8VA4Y3EdVAiAD6A4CyasBHtaJXUxCHnn7Bxc1s1e1KhPNC6Vw9szHwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":194030},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"19be07c04392cfd26397ef9acdd6322cfe127a09","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","check":"tsc --noEmit","prepack":"pnpm build","prepare":"pnpm build","docs:build":"node scripts/build-docs-site.mjs","docs:check":"pnpm docs:build && git diff --exit-code -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt && test -z \"$(git ls-files --others --exclude-standard -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt)\"","prepublishOnly":"pnpm check && pnpm test && pnpm build"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/openclaw/rastermill.git","type":"git"},"_npmVersion":"11.14.1","description":"Fast, portable image processing for Node agents.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@silvia-odwyer/photon-node":"0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.3","devDependencies":{"vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^22.15.30"},"_npmOperationalInternal":{"tmp":"tmp/rastermill_0.3.0_1779826032083_0.2262784672040843","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"rastermill","version":"0.3.1","keywords":["heic","image","jpeg","photon","png","resize","webp"],"license":"MIT","_id":"rastermill@0.3.1","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://rastermill.com/","bugs":{"url":"https://github.com/openclaw/rastermill/issues"},"dist":{"shasum":"b92d27739775e0e26d054ee1fe922b7ab4981553","tarball":"https://registry.npmjs.org/rastermill/-/rastermill-0.3.1.tgz","fileCount":7,"integrity":"sha512-CX4nij6+ZLHYIaojJNfLTr7W+AiH/IPJi6E9Aw1br2///1KZL2KBOHd68rkcLedc47MPvb4hhH+fzYeGFa4A/Q==","signatures":[{"sig":"MEYCIQDm7gsKxaA7GPsV0G7wXnRVLehMV5zq4Ef8l1Xk/yf4XwIhAIy8nyiH9uXIel8TMdZBAUEu3POj0FiQIUxMBHE1ez+B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":197853},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"dbb453b25941be8a588320261a9f2494334b8760","scripts":{"lint":"oxlint src test scripts --tsconfig tsconfig.json --vitest-plugin --no-error-on-unmatched-pattern","test":"vitest run","build":"tsc -p tsconfig.build.json","check":"tsgo --noEmit","format":"oxfmt .oxfmtrc.json package.json tsconfig.json tsconfig.build.json vitest.config.ts src test scripts","prepack":"pnpm build","prepare":"pnpm build","docs:build":"node scripts/build-docs-site.mjs","docs:check":"pnpm docs:build && git diff --exit-code -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt && test -z \"$(git ls-files --others --exclude-standard -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt)\"","format:check":"oxfmt --check .oxfmtrc.json package.json tsconfig.json tsconfig.build.json vitest.config.ts src test scripts","package:smoke":"node scripts/package-smoke.mjs /tmp/rastermill-pack","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm check && pnpm lint && pnpm format:check && pnpm test:coverage && pnpm build"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/openclaw/rastermill.git","type":"git"},"_npmVersion":"11.14.1","description":"Fast, portable image processing for Node agents.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"@silvia-odwyer/photon-node":"0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.3","devDependencies":{"oxfmt":"^0.52.0","oxlint":"^1.67.0","vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^22.15.30","@vitest/coverage-v8":"^3.2.4","@typescript/native-preview":"7.0.0-dev.20260526.1"},"_npmOperationalInternal":{"tmp":"tmp/rastermill_0.3.1_1780153093262_0.7513759891328118","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"rastermill","version":"0.3.2","keywords":["heic","image","jpeg","photon","png","resize","webp"],"license":"MIT","_id":"rastermill@0.3.2","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://rastermill.com/","bugs":{"url":"https://github.com/openclaw/rastermill/issues"},"dist":{"shasum":"967d2278dd05155146c0479e88fa7ac6e56eb552","tarball":"https://registry.npmjs.org/rastermill/-/rastermill-0.3.2.tgz","fileCount":7,"integrity":"sha512-Qr4Q+PKsAyAPn4sHwY+hJ2P7rv+WJ4HZ8X+KjwVmm0tOpkb1IrtCb7sbwDZ8iJLUgiYafhmG4VHwo7Pjej0pgQ==","signatures":[{"sig":"MEUCIErvaqaySFJQmvStQVHKTfXSbEKoN95pg8anadM4I0A6AiEA3sUAc/UOieZ7sFiOMqye9Lc2CjA2q1EmLYwmJ2U9aD4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH1a3ElFqaNT9mnJ/wxOXva2SAH0GGpMIRnK2uw9Ok60AiAxkbWzXaB3tDfoHJO0BAKf7U3lZCVpfi7Pm6qt79Cwzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":212264},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"oxlint src test scripts --tsconfig tsconfig.json --vitest-plugin --no-error-on-unmatched-pattern","test":"vitest run","build":"tsc -p tsconfig.build.json","check":"tsgo --noEmit","format":"oxfmt .oxfmtrc.json package.json tsconfig.json tsconfig.build.json vitest.config.ts src test scripts","prepack":"pnpm build","prepare":"pnpm build","docs:build":"node scripts/build-docs-site.mjs","docs:check":"pnpm docs:build && git diff --exit-code -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt && test -z \"$(git ls-files --others --exclude-standard -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt)\"","format:check":"oxfmt --check .oxfmtrc.json package.json tsconfig.json tsconfig.build.json vitest.config.ts src test scripts","package:smoke":"node scripts/package-smoke.mjs /tmp/rastermill-pack","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm check && pnpm lint && pnpm format:check && pnpm test:coverage && pnpm build"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/openclaw/rastermill.git","type":"git"},"_npmVersion":"11.17.0","description":"Fast, portable image processing for Node agents.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"@silvia-odwyer/photon-node":"0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.3","devDependencies":{"oxfmt":"^0.62.0","oxlint":"^1.77.0","vitest":"^3.2.7","typescript":"^7.0.2","@types/node":"^22.20.1","@vitest/coverage-v8":"^3.2.7","@typescript/native-preview":"7.0.0-dev.20260707.2"},"_npmOperationalInternal":{"tmp":"tmp/rastermill_0.3.2_1786329281386_0.34223301269042805","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"rastermill","version":"0.3.3","keywords":["heic","image","jpeg","photon","png","resize","webp"],"license":"MIT","_id":"rastermill@0.3.3","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"homepage":"https://rastermill.com/","bugs":{"url":"https://github.com/openclaw/rastermill/issues"},"dist":{"shasum":"064c159ca63c3d855c45c1f4a2564ce3bfa4b92c","tarball":"https://registry.npmjs.org/rastermill/-/rastermill-0.3.3.tgz","fileCount":7,"integrity":"sha512-tnNH+jymMZxcGfR+w32fbD9xpDytCrHEyYx/OCFTTIf2gAcaiasUSurBA3lObRrRHy1leitG0QRfJB6mV/SJ4w==","signatures":[{"sig":"MEQCIELGxeMD29dtORj2R+sUSk5PMe+QK3u0MRQXGdlWHdRDAiBHKYvcEkr9hJba36njdSWBZIxASWbYqdl7bZe6ZF7Lrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIADE+U1G2I3PaVg/A4jLARLH1dB93PgDHF18RthFD4XEAiAfbXfAxtK1q1z1QoOWb3mr7Fwsm2By3WPjaTkft1FcbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":214152},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"lint":"oxlint src test scripts --tsconfig tsconfig.json --vitest-plugin --no-error-on-unmatched-pattern","test":"vitest run","build":"tsc -p tsconfig.build.json","check":"tsgo --noEmit","format":"oxfmt .oxfmtrc.json package.json tsconfig.json tsconfig.build.json vitest.config.ts src test scripts","prepack":"pnpm build","prepare":"pnpm build","docs:build":"node scripts/build-docs-site.mjs","docs:check":"pnpm docs:build && git diff --exit-code -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt && test -z \"$(git ls-files --others --exclude-standard -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt)\"","format:check":"oxfmt --check .oxfmtrc.json package.json tsconfig.json tsconfig.build.json vitest.config.ts src test scripts","package:smoke":"node scripts/package-smoke.mjs /tmp/rastermill-pack","test:coverage":"vitest run --coverage","prepublishOnly":"pnpm check && pnpm lint && pnpm format:check && pnpm test:coverage && pnpm build"},"_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/openclaw/rastermill.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast, portable image processing for Node agents.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"@silvia-odwyer/photon-node":"0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.25.0","devDependencies":{"oxfmt":"^0.66.0","oxlint":"^1.81.0","vitest":"^5.0.0","typescript":"^7.0.2","@types/node":"^22.20.1","@vitest/coverage-v8":"^5.0.0","@typescript/native-preview":"7.0.0-dev.20260707.2"},"_npmOperationalInternal":{"tmp":"tmp/rastermill_0.3.3_1788637689533_0.4056791453542772","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"_id":"rastermill@0.4.0","bugs":{"url":"https://github.com/openclaw/rastermill/issues"},"dist":{"shasum":"c6b33c172726ffcde79aa00de0d5f75e147f1cfd","tarball":"https://registry.npmjs.org/rastermill/-/rastermill-0.4.0.tgz","fileCount":6,"integrity":"sha512-5WrZ6tuK54oVk45w/riFm0/VwTSieJ45c/zAGIaNtTKOSYL2zwx1r3VdBB2pKwlOO/tG+A9lmvN+3S6hwU6znA==","signatures":[{"sig":"MEUCIQCj2qn0ewUAMoUW6Tq6uT+hSK60pEbxWeSEsfXAUF7fJgIgUE1Uho3OyIhq7k0x7AM6TuHG7skxZ/XpzB0lmloD5Kg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDEBsuJDB1nIODe85e91JzxC1ipESUTbvsXB0Zoj7mQLAiAjHH8jYoilC2lcZ65IdF44vhqaURWCczhMOcMFINk8nw=="}],"unpackedSize":210563},"main":"./dist/index.js","name":"rastermill","type":"module","_from":"file:/var/folders/hs/xczqwtsn7l5_02yx540zf38w0000gn/T/oss-s3-rastermill/rastermill-0.4.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"license":"MIT","scripts":{"lint":"oxlint src test scripts --tsconfig tsconfig.json --vitest-plugin --no-error-on-unmatched-pattern","test":"vitest run","build":"tsc -p tsconfig.build.json","check":"tsgo --noEmit","format":"oxfmt .oxfmtrc.json package.json tsconfig.json tsconfig.build.json vitest.config.ts src test scripts","docs:build":"node scripts/build-docs-site.mjs","docs:check":"pnpm docs:build && git diff --exit-code -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt && test -z \"$(git ls-files --others --exclude-standard -- docs/*.html docs/favicon.svg docs/.nojekyll docs/llms.txt)\"","format:check":"oxfmt --check .oxfmtrc.json package.json tsconfig.json tsconfig.build.json vitest.config.ts src test scripts","package:smoke":"node scripts/package-smoke.mjs /tmp/rastermill-pack","test:coverage":"vitest run --coverage"},"version":"0.4.0","_npmUser":{"name":"steipete","email":"steipete@gmail.com"},"homepage":"https://rastermill.com/","keywords":["heic","image","jpeg","photon","png","resize","webp"],"_resolved":"/var/folders/hs/xczqwtsn7l5_02yx540zf38w0000gn/T/oss-s3-rastermill/rastermill-0.4.0.tgz","_integrity":"sha512-5WrZ6tuK54oVk45w/riFm0/VwTSieJ45c/zAGIaNtTKOSYL2zwx1r3VdBB2pKwlOO/tG+A9lmvN+3S6hwU6znA==","repository":{"url":"git+https://github.com/openclaw/rastermill.git","type":"git"},"_npmVersion":"11.19.0","description":"Fast, portable image processing for Node agents.","directories":{},"maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"@silvia-odwyer/photon-node":"0.3.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.70.0","oxlint":"^1.85.0","vitest":"^5.0.1","typescript":"^7.0.2","@types/node":"^22.20.4","@vitest/coverage-v8":"^5.0.1","@typescript/native-preview":"7.0.0-dev.20260707.2"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rastermill_0.4.0_1790240237065_0.11095164587457607"}}},"time":{"created":"2026-05-25T19:29:08.261Z","modified":"2026-09-24T08:57:17.321Z","0.1.0":"2026-05-25T19:29:08.571Z","0.2.0":"2026-05-26T01:25:49.327Z","0.3.0":"2026-05-26T20:07:12.218Z","0.3.1":"2026-05-30T14:58:13.440Z","0.3.2":"2026-08-10T02:34:41.483Z","0.3.3":"2026-09-05T19:48:09.633Z","0.4.0":"2026-09-24T08:57:17.169Z"},"bugs":{"url":"https://github.com/openclaw/rastermill/issues"},"license":"MIT","homepage":"https://rastermill.com/","keywords":["heic","image","jpeg","photon","png","resize","webp"],"repository":{"url":"git+https://github.com/openclaw/rastermill.git","type":"git"},"description":"Fast, portable image processing for Node agents.","maintainers":[{"name":"steipete","email":"steipete@gmail.com"}],"readme":"# Rastermill\n\n![Rastermill banner](docs/assets/readme-banner.jpg)\n\nFast, portable image processing for Node agents.\n\nRastermill provides a small image-processing API for server-side Node code. It uses\nPhoton for fast in-process image work and can fall back to native tools such as\n`sips`, ImageMagick, GraphicsMagick, or ffmpeg for formats that need external\ncodec support.\n\nDocs: <https://rastermill.com/>\n\n```ts\nimport { createRastermill } from \"rastermill\";\n\nconst rastermill = createRastermill({\n  execution: \"auto\",\n  limits: {\n    inputPixels: 25_000_000,\n    outputPixels: 25_000_000,\n  },\n});\n\nconst info = await rastermill.probe(imageBuffer);\nconst jpeg = await rastermill.encode(imageBuffer, {\n  format: \"jpeg\",\n  resize: { maxSide: 1600 },\n  quality: 85,\n});\n// => { data, format: \"jpeg\", mimeType: \"image/jpeg\", width, height, bytes, metadata: \"stripped\", resized, chosen }\n```\n\n## API\n\n```ts\nconst rastermill = createRastermill(options);\n```\n\nThe API is three methods:\n\n- `probe(input)` — read `format`, `width`, `height`, `bytes`, `hasAlpha`, and `orientation` from the header, without a full decode.\n- `transparency(input)` — decode common raster formats and report `hasAlphaChannel` separately from `hasTransparentPixels`.\n- `encode(input, options?)` — resize, re-encode to an exact format, auto-select opaque vs transparent output, fit dimension limits, and/or search a byte budget.\n\nThe same methods are also exported as standalone functions backed by a lazy\ndefault-configured instance:\n\n```ts\nimport { probe, transparency, encode } from \"rastermill\";\n```\n\nA straight format conversion (e.g. HEIC/AVIF → JPEG) is just `encode(input, { format: \"jpeg\" })` with no `resize`. JPEG EXIF orientation and primary-image HEIF/AVIF `irot`/`imir` transforms are detected for probing and output geometry. Rastermill applies them explicitly with the macOS `sips` backend; other native decoders retain their existing container-transform behavior. Pass `autoOrient: false` to skip explicit orientation work.\n\nEncoded outputs strip metadata by default. `metadata: \"preserve\"` only preserves\nmetadata when Rastermill can return the original bytes unchanged; Photon does not\nexpose EXIF/GPS/ICC/XMP read, write, or copy APIs, so any real transform strips\nmetadata and reports `metadata: \"stripped\"`.\n\n## Backends\n\n`execution: \"auto\"` uses Photon in-process for PNG, JPEG, GIF, WebP, and BMP\ninput, then native tools when a format needs external codec support. Use\n`execution: \"internal\"` to forbid child processes, or `execution: \"external\"`\nto use only native tools. WebP quality control requires an external backend\nbecause Photon's WebP encoder does not accept a quality setting.\n\nRastermill refuses to decode images with unknown dimensions, images larger than the\nconfigured input pixel budget, or resize targets larger than the configured\noutput pixel budget.\n","readmeFilename":"README.md"}