2016年4月22日金曜日

城SHOT

firefox greasemonkey拡張

とあるゲームにスクリーンショットを撮る機能をこっそり追加します.




// ==UserScript==
// @name        shiro_shot
// @namespace   defghi1977
// @description 御城プロジェクト:REのスクリーンショットを撮ります
// @include     http://assets.shiropro-re.net/html/Oshiro.html
// @version     1
// @grant       none
// ==/UserScript==
'use strict';
(function () {
  var version = '0.1';
  var body = document.body;
  var panel = document.createElement('div');
  panel.className = 'shiro_shot';
  var style = panel.style;
  style.position = 'absolute';
  style.top = '720px'
  style.right = '10px';
  style.fontSize = '10px';
  style.zInidex = 100;
  panel.textContent = '城SHOT v' + version;
  var button = document.createElement('input');
  button.type = 'button';
  button.value = 'as is';
  button.addEventListener('click', function () {
    shot(false);
  });
  var buttonM = document.createElement('input');
  buttonM.type = 'button';
  buttonM.value = 'mask id';
  buttonM.addEventListener('click', function () {
    shot(true);
  });
  var msg = document.createElement('span');
  var link = document.createElement('a');
  link.download = 'shiro_shot.png';
  var canvas = document.createElement('canvas');
  panel.appendChild(button);
  panel.appendChild(buttonM);
  panel.appendChild(msg);
  panel.appendChild(link);
  body.appendChild(panel);
  function shot(mask) {
    var game = body.querySelector('#canvas');
    canvas.width = game.width;
    canvas.height = game.height;
    var ctx = canvas.getContext('2d');
    ctx.drawImage(game, 0, 0);
    if (mask) {
      ctx.fillStyle = '#2e0f06';
      ctx.fillRect(210, 5, 210, 24);
    }
    if (link.href) {
      URL.revokeObjectURL(link.href);
    }
    canvas.toBlob(function (blob) {
      link.href = URL.createObjectURL(blob);
      link.click();
    }, 'image/png');
  }
}) ();

0 件のコメント:

コメントを投稿