作りかけ。その内配布してるユーザースクリプトに組み込むつもり。ファイル名の決定どうしよう。

let url = document.querySelector('img[src]').getAttribute("src");
let blob = await fetch(url).then(r => r.blob()).then(blob => {
   let fileReader = new FileReader();
   fileReader.onload = function () {
      let dataURI = this.result;
      let canvas = document.createElement("canvas");
      let context = canvas.getContext("2d");
      let image = new Image();
      image.src = dataURI;
      image.onload = function () {
         canvas.width = image.width;
         canvas.height = image.height;
         context.drawImage(image, 0, 0);
         let JPEG = canvas.toDataURL("image/jpeg", 0.85);
         let link = document.createElement('a');
         link.href = JPEG;
         link.download = "JPEG.jpg";
         link.click();
      };
   }
   fileReader.readAsDataURL(blob);
});