{"_id":"pixsvg","name":"pixsvg","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"pixsvg","version":"0.2.0","sideEffects":false,"description":"An image processing library for Node.js with SVG read, write, rasterize, and markup transforms.","engines":{"node":">=18"},"scripts":{"lint":"eslint .","test":"vitest --exclude '**/*.browser.test.ts'","test:browser":"vitest --config vitest.config.browser.mjs","build":"tshy","build:browser":"rollup -c","dev":"tshy --watch","clean":"rm -rf node_modules .tshy .tshy-build dist .turbo"},"keywords":["pixsvg","image","image processing","image manipulation","svg","png","jpg","jpeg","bmp","resize","scale","crop"],"author":"","license":"MIT","dependencies":{"@jimp/core":"1.6.1","@jimp/diff":"1.6.1","@jimp/js-bmp":"1.6.1","@jimp/js-gif":"1.6.1","@jimp/js-jpeg":"1.6.1","@jimp/js-png":"1.6.1","@jimp/js-tiff":"1.6.1","@jimp/plugin-blit":"1.6.1","@jimp/plugin-blur":"1.6.1","@jimp/plugin-circle":"1.6.1","@jimp/plugin-color":"1.6.1","@jimp/plugin-contain":"1.6.1","@jimp/plugin-cover":"1.6.1","@jimp/plugin-crop":"1.6.1","@jimp/plugin-displace":"1.6.1","@jimp/plugin-dither":"1.6.1","@jimp/plugin-fisheye":"1.6.1","@jimp/plugin-flip":"1.6.1","@jimp/plugin-hash":"1.6.1","@jimp/plugin-mask":"1.6.1","@jimp/plugin-print":"1.6.1","@jimp/plugin-quantize":"1.6.1","@jimp/plugin-resize":"1.6.1","@jimp/plugin-rotate":"1.6.1","@jimp/plugin-threshold":"1.6.1","@jimp/types":"1.6.1","@jimp/utils":"1.6.1","@resvg/resvg-js":"^2.6.2"},"devDependencies":{"@rollup/plugin-alias":"^5.1.0","@rollup/plugin-commonjs":"^26.0.1","@rollup/plugin-inject":"^5.0.5","@rollup/plugin-node-resolve":"^15.2.3","@rollup/plugin-terser":"^0.4.4","@vitest/browser":"^2.0.5","eslint":"^9.9.1","node-self":"^1.0.2","path-browserify":"^1.0.1","rollup":"^4.21.2","rollup-plugin-dts":"^6.1.1","rollup-plugin-esbuild":"^6.1.1","rollup-plugin-polyfill-node":"^0.13.0","tshy":"^3.0.2","typescript":"^5.5.4","vite-plugin-node-polyfills":"^0.22.0","vitest":"^2.0.5"},"tshy":{"exclude":["**/*.test.ts"],"esmDialects":["browser"],"exports":{"./package.json":"./package.json",".":"./src/index.ts","./fonts":"./src/fonts.ts"}},"exports":{"./package.json":"./package.json",".":{"browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"import":{"types":"./dist/esm/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/commonjs/index.d.ts","default":"./dist/commonjs/index.js"}},"./svg":{"import":{"types":"./dist/esm/svg.d.ts","default":"./dist/esm/svg.js"},"require":{"types":"./dist/commonjs/svg.d.ts","default":"./dist/commonjs/svg.js"}},"./fonts":{"browser":{"types":"./dist/browser/fonts.d.ts","default":"./dist/browser/fonts.js"},"import":{"types":"./dist/esm/fonts.d.ts","default":"./dist/esm/fonts.js"},"require":{"types":"./dist/commonjs/fonts.d.ts","default":"./dist/commonjs/fonts.js"}}},"main":"./dist/commonjs/index.js","types":"./dist/commonjs/index.d.ts","type":"module","publishConfig":{"access":"public"},"module":"./dist/esm/index.js","_id":"pixsvg@0.2.0","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-GnOGxdd2SZldUsPp90F0mpbyJhJZ2RIxpcQtnTgEGewBC79DJPexlaBZHFW1vZY8CAZjy+s5wr56gyTmmRBt4Q==","shasum":"3d8d5c711f27e6ffac39e401e2381a9118614d3f","tarball":"https://registry.npmjs.org/pixsvg/-/pixsvg-0.2.0.tgz","fileCount":35,"unpackedSize":3342557,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCNSpQVux5XipmZ4r72mk5CVknW7fHKEoh3iz3BsTTCpwIgX2kg6ewyqao3tFk3pnjuKwFD3pJxHE+sGEtEFs1Y9i8="}]},"_npmUser":{"name":"xentrolance","email":"laybiaca@gmail.com"},"directories":{},"maintainers":[{"name":"xentrolance","email":"laybiaca@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pixsvg_0.2.0_1788370950995_0.5545397638464884"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-02T17:42:30.781Z","0.2.0":"2026-09-02T17:42:31.161Z","modified":"2026-09-02T17:42:31.492Z"},"maintainers":[{"name":"xentrolance","email":"laybiaca@gmail.com"}],"description":"An image processing library for Node.js with SVG read, write, rasterize, and markup transforms.","keywords":["pixsvg","image","image processing","image manipulation","svg","png","jpg","jpeg","bmp","resize","scale","crop"],"license":"MIT","readme":"<div align=\"center\">\n  <h1>pixsvg</h1>\n  <p>Pixel + SVG image toolkit</p>\n</div>\n\n**pixsvg** is an image processing library for Node.js. It reads, transforms, and writes raster images, and it processes SVG: rasterize, recolor, resize markup, and export.\n\nVersion **0.2.0** — local package, not published yet.\n\n## Installation\n\nAfter publish:\n\n```bash\nnpm install pixsvg\n```\n\nFrom this folder:\n\n```bash\nnpm install /path/to/MyModule_SVG\n```\n\n## Raster images\n\n```js\nconst { Pixsvg } = require(\"pixsvg\");\n\nconst image = await Pixsvg.read(\"test.png\");\nimage.resize(256, 256);\nawait image.write(\"test-small.jpg\");\n```\n\nESM:\n\n```js\nimport { Pixsvg } from \"pixsvg\";\n\nconst image = new Pixsvg({ width: 256, height: 256, color: 0xffffffff });\nawait image.write(\"out.png\");\n```\n\n## SVG\n\n### Read and rasterize\n\n`Pixsvg.read` accepts a `.svg` file, a buffer, a URL, or an SVG string. The SVG is rasterized so every existing operation (`resize`, `crop`, `greyscale`, …) works.\n\n```js\nimport { Pixsvg } from \"pixsvg\";\n\nconst image = await Pixsvg.read(\"icon.svg\");\nimage.resize(128, 128);\nawait image.write(\"icon.png\");\n```\n\nFrom markup, at a chosen width:\n\n```js\nconst image = await Pixsvg.read(\n  `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100\" height=\"100\">\n     <circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#e74c3c\"/>\n   </svg>`,\n  { width: 400 }\n);\n```\n\n### Write SVG\n\n```js\nawait image.write(\"out.svg\");\nconst svgBuffer = await image.getBuffer(\"image/svg+xml\");\n```\n\nBy default the raster is embedded as PNG inside SVG (looks identical). For pixel rectangles instead:\n\n```js\nawait image.write(\"out.svg\", { mode: \"pixels\" });\n```\n\n### Process SVG markup (no raster)\n\n```js\nimport { parseSvg, transformSvg, isSvg } from \"pixsvg\";\n\nconst info = parseSvg(svgString);\n// { width, height, viewBox, markup }\n\nconst recolored = transformSvg(svgString, {\n  width: 256,\n  height: 256,\n  replace: { \"#e74c3c\": \"#2ecc71\" },\n  background: \"#ffffff\",\n});\n```\n\n`transformSvg` can set `width`, `height`, `viewBox`, `fill`, `stroke`, `opacity`, `background`, and `replace` (swap fill/stroke/stop-color values).\n\n### Rasterize helper\n\n```js\nimport { rasterizeSvg } from \"pixsvg\";\n\nconst bitmap = await rasterizeSvg(svgString, { width: 512, background: \"#ffffff\" });\nconst image = new Pixsvg(bitmap);\n```\n\n## Formats\n\n- JPEG\n- PNG\n- BMP\n- TIFF\n- GIF\n- SVG\n\n## MIME helpers\n\n```js\nimport { Mime } from \"pixsvg\";\n\nMime.png; // \"image/png\"\nMime.svg; // \"image/svg+xml\"\n```\n\n## Other exports\n\n| Export | Purpose |\n| --- | --- |\n| `Pixsvg` | Main image class (`read`, `write`, transforms) |\n| `PixsvgInstance` | TypeScript type for a `Pixsvg` image |\n| `Mime` | Default format MIME types |\n| `isSvg` / `parseSvg` / `transformSvg` / `rasterizeSvg` | SVG helpers |\n| `loadFont` / `measureText` | Bitmap font printing |\n| `diff` | Compare two images |\n| `ResizeStrategy`, `BlendMode`, `HorizontalAlign`, `VerticalAlign` | Options enums |\n| `intToRGBA`, `rgbaToInt`, `cssColorToHex` | Color helpers |\n\nFonts:\n\n```js\nimport { SANS_32_BLACK } from \"pixsvg/fonts\";\n```\n","readmeFilename":"README.md","_rev":"1-13cf9f5e72c99dd99fda5eee70e9b129"}