Skip to content

Commit ddda5d3

Browse files
astururzbjornson
authored andcommitted
make isBase64 boolean (#1267)
1 parent 5df91bc commit ddda5d3

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

lib/image.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Object.defineProperty(Image.prototype, 'src', {
3838
if (/^\s*data:/.test(val)) { // data: URI
3939
const commaI = val.indexOf(',')
4040
// 'base64' must come before the comma
41-
const isBase64 = val.lastIndexOf('base64', commaI)
41+
const isBase64 = val.lastIndexOf('base64', commaI) !== -1
4242
const content = val.slice(commaI + 1)
4343
setSource(this, Buffer.from(content, isBase64 ? 'base64' : 'utf8'), val);
4444
} else if (/^\s*https?:\/\//.test(val)) { // remote URL

test/image.test.js

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const png_checkers = `${__dirname}/fixtures/checkers.png`
1717
const png_clock = `${__dirname}/fixtures/clock.png`
1818
const jpg_chrome = `${__dirname}/fixtures/chrome.jpg`
1919
const jpg_face = `${__dirname}/fixtures/face.jpeg`
20+
const svg_tree = `${__dirname}/fixtures/tree.svg`
2021

2122
describe('Image', function () {
2223
it('Prototype and ctor are well-shaped, don\'t hit asserts on accessors (GH-803)', function () {
@@ -81,6 +82,30 @@ describe('Image', function () {
8182
})
8283
})
8384

85+
it('loads SVG data URL base64', function () {
86+
const base64Enc = fs.readFileSync(svg_tree, 'base64')
87+
const dataURL = `data:image/svg+xml;base64,${base64Enc}`
88+
return loadImage(dataURL).then((img) => {
89+
assert.strictEqual(img.onerror, null)
90+
assert.strictEqual(img.onload, null)
91+
assert.strictEqual(img.width, 200)
92+
assert.strictEqual(img.height, 200)
93+
assert.strictEqual(img.complete, true)
94+
})
95+
})
96+
97+
it('loads SVG data URL utf8', function () {
98+
const utf8Encoded = fs.readFileSync(svg_tree, 'utf8')
99+
const dataURL = `data:image/svg+xml;utf8,${utf8Encoded}`
100+
return loadImage(dataURL).then((img) => {
101+
assert.strictEqual(img.onerror, null)
102+
assert.strictEqual(img.onload, null)
103+
assert.strictEqual(img.width, 200)
104+
assert.strictEqual(img.height, 200)
105+
assert.strictEqual(img.complete, true)
106+
})
107+
})
108+
84109
it('calls Image#onload multiple times', function () {
85110
return loadImage(png_clock).then((img) => {
86111
let onloadCalled = 0

0 commit comments

Comments
 (0)