Greasy Fork is available in English.

转换微信公众号图片到兼容格式

将WEBP格式图片转换到JPEG、PNG等兼容性较好的格式

Versão de: 09/10/2019. Veja: a última versão.

// ==UserScript==
// @name         转换微信公众号图片到兼容格式
// @description  将WEBP格式图片转换到JPEG、PNG等兼容性较好的格式
// @namespace    https://greasyfork.org/users/197529
// @homepage     https://greasyfork.org/scripts/390883
// @supportURL   https://greasyfork.org/scripts/390883/feedback
// @author       kkocdko
// @license      Unlicense
// @version      0.3
// @match        *://mp.weixin.qq.com/*
// ==/UserScript==
'use strict'

addFloatButton('转换全部图片到兼容格式', function () {
  document.querySelectorAll('img').forEach(el => {
    const imgUrlStr = el.dataset.src || el.src
    if (!imgUrlStr) { return }
    const imgUrl = new URL(imgUrlStr)
    imgUrl.searchParams.set('tp', 'png')
    const newImg = el.cloneNode()
    newImg.src = imgUrl.href
    el.parentNode.replaceChild(newImg, el)
  })
  this.style.background = '#4caf50'
  this.textContent = '全部图片都已转换完成!'
})

function addFloatButton (text, onclick) {
  return (document.addFloatButton = document.addFloatButton || (() => {
    const buttonContainer = document.createElement('div').attachShadow({ mode: 'open' })
    buttonContainer.innerHTML = '<style>:host{position:fixed;top:3px;left:3px;z-index:3333333333;height:0}#i{display:none}*{float:left;margin:3px;padding:1em;outline:0;border:0;border-radius:4px;background:#2196f3;box-shadow:0 1px 3px 0 #00000022;color:#fff;font-size:14px;line-height:0;transition:.3s}:active{background:#63b5f7;box-shadow:0 2px 5px 0 #00000033}button:active{transition:0s}:checked~button{visibility:hidden;opacity:0;transform:translateY(-3em)}label{border-radius:50%}:checked~label{opacity:.3;transform:translateY(3em)}</style><input id=i type=checkbox><label for=i></label>'
    document.body.appendChild(buttonContainer.host)
    return (text, onclick) => {
      const button = document.createElement('button')
      button.textContent = text
      button.addEventListener('click', onclick)
      return buttonContainer.appendChild(button)
    }
  })())(text, onclick)
}