1 | <h1 align="center">
|
2 | <br>
|
3 | <img width="365" src="https://cdn.rawgit.com/data-uri/datauri/master/media/datauri.svg" alt="datauri">
|
4 | <br>
|
5 | <br>
|
6 | <br>
|
7 | </h1>
|
8 |
|
9 | Node.js [Module](#module) and [CLI](http://npm.im/datauri-cli) to generate [Data URI scheme](http://en.wikipedia.org/wiki/Data_URI_scheme).
|
10 |
|
11 | > The data URI scheme is a uniform resource identifier (URI) scheme that provides a way to include data in-line in web pages as if they were external resources.
|
12 |
|
13 | from: [Wikipedia](http://en.wikipedia.org/wiki/Data_URI_scheme)
|
14 |
|
15 | ## MODULE [![Build Status](https://github.com/data-uri/datauri/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/data-uri/datauri/actions/workflows/main.yml?query=branch%3Amain)
|
16 |
|
17 | `npm install -S datauri`
|
18 |
|
19 | ### Getting started
|
20 |
|
21 | By default, datauri module returns a promise, which is resolved with `data:uri` string or rejected with file read error:
|
22 |
|
23 | ```js
|
24 | const datauri = require('datauri');
|
25 |
|
26 | const content = await datauri('test/myfile.png');
|
27 |
|
28 | console.log(content);
|
29 | //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
|
30 | ```
|
31 |
|
32 | ### Callback style and meta data
|
33 |
|
34 | ```js
|
35 | const datauri = require('datauri');
|
36 |
|
37 | datauri('test/myfile.png', (err, content, meta) => {
|
38 | if (err) {
|
39 | throw err;
|
40 | }
|
41 |
|
42 | console.log(content); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
|
43 |
|
44 | console.log(meta.mimetype); //=> "image/png"
|
45 | console.log(meta.base64); //=> "iVBORw0KGgoAAAANSUhEUgAA..."
|
46 | });
|
47 | ```
|
48 |
|
49 | ### CSS parser
|
50 |
|
51 | ```js
|
52 | const datauriCSS = require('datauri/css');
|
53 |
|
54 | await datauriCSS('test/myfile.png');
|
55 | //=> "\n.case {\n background-image: url('data:image/png; base64,iVBORw..."
|
56 |
|
57 | await datauriCSS('test/myfile.png', {
|
58 | className: 'myClass',
|
59 | width: true,
|
60 | height: true
|
61 | });
|
62 | //=> adds image width and height and custom class name
|
63 | ```
|
64 |
|
65 | ### Synchronous calls
|
66 |
|
67 | ```js
|
68 | const Datauri = require('datauri/sync');
|
69 | const meta = Datauri('test/myfile.png');
|
70 |
|
71 | console.log(meta.content); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
|
72 | console.log(meta.mimetype); //=> "image/png"
|
73 | console.log(meta.base64); //=> "iVBORw0KGgoAAAANSUhEUgAA..."
|
74 | console.log(meta.getCSS()); //=> "\n.case {\n background-image: url('data:image/png;base64,iVBORw..."
|
75 | console.log(meta.getCSS('myClass')); //=> "\n.myClass {\n background-image: url('data:image/png;base64,iVBORw..."
|
76 | ```
|
77 |
|
78 | ### From a Buffer
|
79 |
|
80 | If you already have a file Buffer, that's the way to go:
|
81 |
|
82 | ```js
|
83 | const DatauriParser = require('datauri/parser');
|
84 | const parser = new DatauriParser();
|
85 |
|
86 | const buffer = fs.readFileSync('./hello');
|
87 |
|
88 | parser.format('.png', buffer); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
|
89 | ```
|
90 |
|
91 | ### From a string
|
92 |
|
93 | ```js
|
94 | const DatauriParser = require('datauri/parser');
|
95 | const parser = new DatauriParser();
|
96 |
|
97 | parser.format('.png', 'xkcd'); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
|
98 | ```
|
99 |
|
100 | ## Contribute
|
101 |
|
102 | ```CLI
|
103 | $ npm install
|
104 | ```
|
105 |
|
106 | To run test specs
|
107 |
|
108 | ```CLI
|
109 | $ npm test
|
110 | ```
|
111 |
|
112 | ## [ChangeLog](https://github.com/data-uri/datauri/releases)
|
113 |
|
114 | ## Requirements
|
115 |
|
116 | Node.js 10+
|
117 |
|
118 | ### Previous Node versions and deprecated features:
|
119 |
|
120 | Node.js 8
|
121 | `npm install --save datauri@3`
|
122 | docs: https://github.com/data-uri/datauri/blob/v3.0.0/docs/datauri.md
|
123 |
|
124 | Node.js 4+
|
125 | `npm install --save datauri@2`
|
126 | docs: https://github.com/data-uri/datauri/blob/v2.0.0/docs/datauri.md
|
127 |
|
128 | ## License
|
129 |
|
130 | MIT License
|
131 |
|
132 | (c) [Data-URI.js](https://github.com/data-uri)
|
133 |
|
134 | (c) [Helder Santana](https://heldr.com)
|