js怎样判断一个图片是不是base64

多个img标签,每个标签的src都不一样,

现在需要分别对src为base64编码的和非base64的图片做不同的处理,

javascript应该如何区分该图片是不是base64的?

阅读 19.7k
6 个回答

BASE64码开头都是形如data:image/xxx;base64,xxxxxx...的,所以写个正则测试一下src就可以了

$('img').each((i,item)=>{
    let src = item.src
    if(src.indexOf('data:image/jpg;base64,')>-1){
        // base64 图片操作
    }else{
        //path 图片操作
    }
})

直接根据src开头匹配就行

$('img').each((i,item)=>{
    let src = item.src
    if(src.indexOf('data:image')>-1){
        // base64 图片操作
    }else{
        //path 图片操作
    }
})
function validDataUrl(s) {
    return validDataUrl.regex.test(s);
}
validDataUrl.regex = /^\s*data:([a-z]+\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\-._~:@\/?%\s]*?)\s*$/i;

module.exports = validDataUrl;

非base64图片都是URL地址吗

要用startWith,这样效率高:

$('img').each((i,item)=>{
    let src = item.src
    if(src.startWith('data:image')){
        // base64 图片操作
    }else{
        //path 图片操作
    }
})
推荐问题
宣传栏