codepen在线运行
https://codepen.io/youngboyvip/pen/qByzWex
talk is cheap show you the code
const readBuffer = (file) => {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.onload = () => {
resolve(reader.result)
};
reader.onerror = reject
reader.readAsArrayBuffer(file.slice(0, 8))
})
}
const check = (headers) => {
return (buffers, options) => {
return headers.every(
(header, index) => {
return header === buffers[options.offset + index]
}
)
}
}
const isPNG = () => {
return check([0x89, 0x50, 0x4e, 0x47])
}
function change(e) {
var files = e.target.files, f = files[0]
readBuffer(f).then(buffers=>{
const uint8Array = new Uint8Array(buffers)
console.log(uint8Array)
var isPng=isPNG()(uint8Array,{offset:0})
console.log(isPng)
if (isPng) {
console.log('该图片是png格式')
document.getElementById('result').innerHTML='该图片是png格式'
} else {
console.log('改图片不是png格式')
document.getElementById('result').innerHTML='该图片不是png格式'
}
})
}
document.getElementById("file").addEventListener('change',change,false)