Skip to content

Instantly share code, notes, and snippets.

@ManfredHu
Last active July 24, 2021 07:24
Show Gist options
  • Save ManfredHu/33ac35e5ea3856f616c498d3e6d5ba2e to your computer and use it in GitHub Desktop.
Save ManfredHu/33ac35e5ea3856f616c498d3e6d5ba2e to your computer and use it in GitHub Desktop.
base64 to image,兼容各种svg,png,jpeg,jpg,webp,gif
import fs from 'fs'
// 转化Data URI scheme to image file
const typeToExtName: Record<string, string> = {
'jpeg': '.jpeg',
'jpg': '.jpg',
'png': '.png',
'svg+xml': '.svg',
'gif': '.gif',
'webp': '.webp'
}
async function main() {
// -----jpeg 格式
const strJpeg = `data:image/jpeg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDADIiJSwlHzIsKSw4NTI7S31RS0VFS5ltc1p9tZ++u7Kf
r6zI4f/zyNT/16yv+v/9////////wfD/////////////2wBDATU4OEtCS5NRUZP/zq/O////////
////////////////////////////////////////////////////////////wAARCAAYAEADAREA
AhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAQMAAgQF/8QAJRABAAIBBAEEAgMAAAAAAAAAAQIR
AAMSITEEEyJBgTORUWFx/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAA
AAD/2gAMAwEAAhEDEQA/AOgM52xQDrjvAV5Xv0vfKUALlTQfeBm0HThMNHXkL0Lw/swN5qgA8yT4
MCS1OEOJV8mBz9Z05yfW8iSx7p4j+jA1aD6Wj7ZMzstsfvAas4UyRHvjrAkC9KhpLMClQntlqFc2
X1gUj4viwVObKrddH9YDoHvuujAEuNV+bLwFS8XxdSr+Cq3Vf+4F5RgQl6ZR2p1eAzU/HX80YBYy
JLCuexwJCO2O1bwCRidAfWBSctswbI12GAJT3yiwFR7+MBjGK2g/WAJR3FdF84E2rK5VR0YH/9k=`
const strJpg = `data:image/jpg;base64,
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDADIiJSwlHzIsKSw4NTI7S31RS0VFS5ltc1p9tZ++u7Kf
r6zI4f/zyNT/16yv+v/9////////wfD/////////////2wBDATU4OEtCS5NRUZP/zq/O////////
////////////////////////////////////////////////////////////wAARCAAYAEADAREA
AhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAQMAAgQF/8QAJRABAAIBBAEEAgMAAAAAAAAAAQIR
AAMSITEEEyJBgTORUWFx/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAA
AAD/2gAMAwEAAhEDEQA/AOgM52xQDrjvAV5Xv0vfKUALlTQfeBm0HThMNHXkL0Lw/swN5qgA8yT4
MCS1OEOJV8mBz9Z05yfW8iSx7p4j+jA1aD6Wj7ZMzstsfvAas4UyRHvjrAkC9KhpLMClQntlqFc2
X1gUj4viwVObKrddH9YDoHvuujAEuNV+bLwFS8XxdSr+Cq3Vf+4F5RgQl6ZR2p1eAzU/HX80YBYy
JLCuexwJCO2O1bwCRidAfWBSctswbI12GAJT3yiwFR7+MBjGK2g/WAJR3FdF84E2rK5VR0YH/9k=`
// -----png 格式
const strPng = `data:image/png;base64,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`
// -----gif 格式
const strGif = `data:image/gif;base64,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`
// -----webp 格式(小程序暂时只支持网络资源的webp
const strWebp = `data:image/webp;base64,UklGRhgEAABXRUJQVlA4WAoAAAAQAAAAfwAAfwAAQUxQSE0BAAABDzD/ERECTmzbsqJPTz9EAlK+NJCGFCQQ9nyCf/a+hIQR/YfktpEkKeo0QDaNWOYTy9P5Jclr1zVJ/pOsXbck598kp67PJFu966r39/15124c9x/F9LWww16XyroIhd+HVJkg96og5EjbIol7J5UOuRUFa0XiqwU0JRYoWJIpsfCkf9gyH6RJGFNpcQAYhwxIxtX+6ZP768Ct3tm+z/W8q4x029I42pbGcU/SeLdtVFtGtWVUW6DEAiUWKLFA0eLXtUj9o+2h8c3qE21L42h7aHyda/5jfjJDD8xhnts813nu817mvT2w14f3HnzLfCfzHc13JxYosQbqv+7WqPDO05b9HxzEWm9C9W+vMul2mhGr+U0skeCCpXXCtA6wjgh75Q0xgCmMYRLjkCmxLZ1lu81uMp8DMxjJkyVFixQtUrCEwj5l4LJvTuTZ/BYAVlA4IKQCAACwFgCdASqAAIAAPpFCmUelpKKhLRYsALASCWQDf8+9U//ltgO7Vym3HvgTlfrG/CHmq+wDzAP0A/QDr4fwD0Aee36APQA/oHUAc+H7B/7wfr5///d06gDql+gH8A/AD6/e/xGMNsINuXcWSRwg/b+beriN0IvzbvCguZpmKOzYAYv0QLilYmSHW2nfeciM4SoBWKc354muihOAla8qDZ6b3GinZqqNd54FoqQLBzl8ChM0ickngeWAOqtR8cogAP78XNACIhLsfJww+9n1Tk32nqOHJudzOy1CnLgCKGAgMhXgstyJQ4FrC/4ZgTOiE/smvKPoDisGpv16OPwThP1d3yEFN5+aGApDgFYXeiR8dtYkuS/FtlXrzqLOyD3jXvCW7pi6QlzFMV3nubkgFaFxTViCHVjY7NxVjitVz1eI+p5kDnFV7BkrK1WIJ4PfvmZYuHIiWr6cOnPZ/CRKc0/Na1Nwq81USpZX4E4X4wWU723OALce+0TOX0XQwLimgsw40030vDx9A47auqAQsshb9SaKtiDYJxD4UaFcthy1W2lXnevQpuGKb7ehUDngbeyVpJD01ZzyxYWBe2aZRFRNdVytEfqRPT2KNA8PMYaJrUjxK66gizrIXAy6Cw1Xs2cZSNID6Golpm98+uSMWBpkWzZsf3/C70jRziXjXwPUVJvtqYGoeTWzAaFFwd1wFR/ELHzg4oNx1UC+zCvAv8Nyfpovj47QDHmKVCwdAM7f9tY4QHBldZWCFqOd1Nl2mzzU0HlBqhCMm9l0W0zoD7kBuPpC8V88lGOgQdkaKFB/59mJoZjBqji9pHuF519i4mcenujbCoxMJH7CTYJD4PO9r2/57wLLWAJb4Qw03/T/zW5Y/VA+3qjzyH/1IEMIU5AAAAAA`
// -----svg 格式
const strSvg = `data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M5 10.25a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5z'/%3E%3C/svg%3E`
const strSvgNotCharset = `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E %3Cpath fill-opacity='.9' fill-rule='evenodd' d='M5 10.25a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5zm7 0a1.75 1.75 0 1 1 0 3.5 1.75 1.75 0 0 1 0-3.5z'/%3E%3C/svg%3E`
const strSvgNotEncode = `data:image/svg+xml;utf8,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200"><path fill="#00A5E0" d="M145.659,68.949c-5.101-5.208-13.372-5.208-18.473,0L99.479,97.233 L71.772,68.949c-5.1-5.208-13.371-5.208-18.473,0c-5.099,5.208-5.099,13.648,0,18.857l46.18,47.14l46.181-47.14 C150.759,82.598,150.759,74.157,145.659,68.949z"/></svg>`
const strSvg2 = `data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHZpZXdCb3g9IjAgMCAyMDAgMjAwIj48cGF0aCBmaWxsPSIjMjQ4NmZmIiBkPSJNMTQ1LjY1OSw2OC45NDljLTUuMTAxLTUuMjA4LTEzLjM3Mi01LjIwOC0xOC40NzMsMEw5OS40NzksOTcuMjMzIEw3MS43NzIsNjguOTQ5Yy01LjEtNS4yMDgtMTMuMzcxLTUuMjA4LTE4LjQ3MywwYy01LjA5OSw1LjIwOC01LjA5OSwxMy42NDgsMCwxOC44NTdsNDYuMTgsNDcuMTRsNDYuMTgxLTQ3LjE0IEMxNTAuNzU5LDgyLjU5OCwxNTAuNzU5LDc0LjE1NywxNDUuNjU5LDY4Ljk0OXoiLz48L3N2Zz4NCg==`
const handleFiles = [
strJpeg,
strJpg,
strPng,
strGif,
strWebp,
strSvg,
strSvgNotCharset,
strSvgNotEncode,
strSvg2
]
const regExp = /data:image\/([^,;]+);?([^,]*),/
for (const [index, item] of handleFiles.entries()) {
const str = item.replace(/\n\s+/g, '')
console.log(`str`, str)
const matchReg = regExp.exec(str)
// console.log(`matchReg`, matchReg)
if (matchReg) {
const type = matchReg[1]
console.log(`type`, type, index)
const newContent = str.replace(matchReg[0], '')
console.log(`newContent`, newContent)
console.log(`is base64`, matchReg[2].includes('base64'))
if (matchReg[2]?.includes('base64')) {
console.log(`write file`, `./${index}${typeToExtName[type]}`, newContent)
fs.writeFileSync(`./${index}${typeToExtName[type]}`, newContent, 'base64')
} else if (typeToExtName[type]) {
console.log(`write file`, `./${index}${typeToExtName[type]}`, newContent)
fs.writeFileSync(`./${index}${typeToExtName[type]}`, decodeURI(newContent), 'utf8')
} else {
console.error('can not handle', index, newContent, type)
}
} else {
console.error(`match error`, regExp, str)
}
}
}
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment