网页webp转非webp的jpg gif png 图片

webp 谷歌提出的一种图片格式。
支持动图: gif
静图: png jpg

 

网页 webp / jpg / gif / png 图片提取。

已在微信、淘宝、京东、一号店上测试通过。

如果电脑上有 chrome 内核浏览器的话是支持 webp 的,没有的话就无法查找这种格式了。但大多数网站其实都提供了相应 jpg ,一般只要改下文件名就可以了。

总结下主要方式,各个网站的 webp 图:

淘宝的:

https://img.alicdn.com/tps/i2/TB1XN66MpXXXXXyXFXXj64lTXXX-200-200.jpg_100x100q90.jpg_.webp

 

有不同尺寸,甚至格式。如上条链接中有200-200.jpg和100x100q90.jpg的图。从下划线_阶段可得到不同尺寸的图。

 

微信的:

http://mmbiz.qpic.cn/mmbiz_gif/5jiagcxMqZxibYXxGUXNf8gRCiapA1W8gQkGIdB7tLYYXLf07nnZb594M3Y8XLWIITEgvhhWKrDrrEETAvTTzbuzA/0?wx_fmt=gif&tp=webp&wxfrom=5&wx_lazy=1

很明显:wx_fmt=gif 里的 gif 表示了图片的源格式是gif。

 

其他的:

一般都是把后缀改为源格式即可。

 

webp转jpg保存器

 

v0.1

//webp转jpg保存器v0.1 by 小文 2016-12-26
//可能出来的格式, jpeg 没有列出。
var jpg='.jpg'
var png='.png'
var gif='.gif'
var webp=$$("[src$='.webp']"); //所有 webp 对象
var suc=0; //成功提取到的数量
var itg=''; //目标
var exe=''; //当前处理的格式
var oth=''; //没有提取的格式
var msg=''; //输出信息
var sty='style="width:50px;height:50px;padding:4px;border:1px dashed #ccc"'; //附加样式

for(var i=0;i<webp.length;i++){
  var src=webp[i].src
  if(src.lastIndexOf(jpg)!=-1){
    exe=jpg; suc++;
  }else if(src.lastIndexOf(png)!=-1){
    exe=png; suc++;
  }else if(src.lastIndexOf(gif)!=-1){
    exe=gif; suc++;
  }else{
    oth+='<img '+sty+ 'src="'+src+'">';
  }
  if(src.lastIndexOf(jpg)!=-1||src.lastIndexOf(png)!=-1||src.lastIndexOf(gif)!=-1){
    src=src.substring(0,src.lastIndexOf(exe)+4);
    itg+='<img '+sty+ 'src="'+src+'">';
  }
}

if(webp.length==suc){
  msg='<hr>已全部提取:<hr>'+itg+'<hr>'
}else{
  msg='<hr>已提取:<hr>'+itg+'<hr>未提取:<hr>'+oth
};
msg="<hr>总数:"+webp.length+"<br>成功:"+suc+"<br>失败:"+(webp.length-suc)+msg

window.open().document.write(msg)
View Code

 

 v0.3

更新了下,支持微信及直接改后缀如一号店方式:

//webp转jpg保存器v0.3 by 小文 2016-12-26
//可能出来的格式, jpeg 没有列出。
var jpg='.jpg'
var png='.png'
var gif='.gif'
var webp=$$("[src*='&tp=webp']")[0] ? $$("[src*='&tp=webp']") : $$("[src$='.webp']"); //所有 webp 对象
var suc=0; //成功提取到的数量
var itg=''; //目标
var exe=''; //当前处理的格式
var oth=''; //没有提取的格式
var oth2=''; //特殊情况,直接修改后缀
var msg=''; //输出信息
var sty='style="width:50px;height:50px;padding:4px;border:1px dashed #ccc"'; //附加样式

for(var i=0;i<webp.length;i++){
  var src=webp[i].src
  //淘宝
  if(src.lastIndexOf(jpg)!=-1){
    exe=jpg;
  }else if(src.lastIndexOf(png)!=-1){
    exe=png;
  }else if(src.lastIndexOf(gif)!=-1){
    exe=gif;
  }else{
    oth+='<img '+sty+ 'src="'+src+'">';
    //一号店等特殊情况,直接改后缀
    oth2+='<img onerror="console.log(this);this.style.display=\'none\'"'+sty+ 'src="'+src.substring(0,src.lastIndexOf('.webp'))+'.jpg'+'">';
    oth2+='<img onerror="console.log(this);this.style.display=\'none\'"'+sty+ 'src="'+src.substring(0,src.lastIndexOf('.webp'))+'.gif'+'">';
    oth2+='<img onerror="console.log(this);this.style.display=\'none\'"'+sty+ 'src="'+src.substring(0,src.lastIndexOf('.webp'))+'.png'+'">';
  }
  var b1=Boolean(src.lastIndexOf(jpg)!=-1||src.lastIndexOf(png)!=-1||src.lastIndexOf(gif)!=-1)
  if(b1){
    src=src.substring(0,src.lastIndexOf(exe)+4);
    itg+='<img '+sty+ 'src="'+src+'">';
    suc++;
  }else if($$("[src*='&tp=webp']")[0]){
    //腾讯
    itg+='<img '+sty+ 'src="'+webp[i].src.substring(0,webp[i].src.lastIndexOf('&tp=webp'))+'">';suc++
  }
}

if(webp.length==suc){
  msg='<hr>已全部提取:<hr>'+itg+'<hr>'
}else{
  msg='<hr>已提取:<hr>'+itg+'<hr>未提取:<hr>'+oth
};
msg="总数:"+webp.length+"<br>成功:"+suc+"<br>失败:"+(webp.length-suc)+msg+"<hr>特殊提取:<hr>"+oth2

window.open().document.write(msg)

 

posted @ 2016-12-26 16:16  程序媛李李李李蕾  阅读(3069)  评论(0编辑  收藏  举报