東京国際アニメフェアの開催告知チラシから参加拒否企業の作品をグレースケール化します
by
sheile
2010-12-11 [2010/12/11 01:47:45]
東京国際アニメフェアの開催告知チラシから参加拒否企業の作品をグレースケール化します。 http://www.tokyoanime.jp/ja/info/leaflet/ で実行してください。
-
/*
* @title 東京国際アニメフェアの開催告知チラシから参加拒否企業の作品をグレースケール化します
* @description 東京国際アニメフェアの開催告知チラシから参加拒否企業の作品をグレースケール化します。 http://www.tokyoanime.jp/ja/info/leaflet/ で実行してください。
* @include http://www.tokyoanime.jp/ja/info/leaflet/
* @license MIT License
* @require
*/
(function() {
var XMAX = 9;
var YMAX = 8;
var isRetire = new Array(XMAX );
for(var x = 0; x < XMAX ; x++) {
isRetire[x] = new Array(YMAX);
for(var y = 0; y < YMAX; y++) {
isRetire[x][y] = false;
}
}
// 出展を取りやめた作品 via http://twitpic.com/3elscd
isRetire[0][3] = true;
isRetire[1][2] = true; // MAJOR(小学館)
isRetire[1][4] = true; // ワンピース(集英社)
isRetire[2][3] = true;
isRetire[2][4] = true; // ドラゴンボール(集英社)
isRetire[2][6] = true; // ドラえもん(小学館)
isRetire[3][1] = true;
isRetire[3][2] = true;
isRetire[3][4] = true; // 名探偵コナン(小学館)
isRetire[3][7] = true; // FairyTale(講談社)
isRetire[4][1] = true;
isRetire[4][2] = true;
isRetire[4][5] = true;
isRetire[4][6] = true;
isRetire[6][3] = true;
isRetire[6][4] = true;
isRetire[6][7] = true;
isRetire[7][3] = true;
isRetire[8][2] = true;
isRetire[8][3] = true;
isRetire[8][4] = true;
isRetire[8][5] = true;
isRetire[8][6] = true;
var image = document.querySelector("div#detail img");
var container = document.querySelector("div#detail > p");
var canvas = document.createElement("canvas");
canvas.width = image.width;
canvas.height = image.height;
canvas.background = "none repeat scroll 0 0 #FFFFFF";
canvas.style.border = "1px solid #CCCCCC";
canvas.style.marginBottom = "10px";
canvas.style.padding = "3px";
if(!canvas.getContext) return;
var context = canvas.getContext('2d');
context.drawImage(image, 0, 0);
var imageData = context.getImageData(0, 0, image.width, image.height);
var data = imageData.data;
for(var yIndex = 0; yIndex < YMAX; yIndex++) {
for(var xIndex = 0; xIndex < XMAX; xIndex++) {
if(isRetire[xIndex][yIndex]) {
var adjustY = (xIndex % 2 == 1) ? (41.1428571428571 / 2) : 0;
var cx = Math.floor(59 + xIndex * 35.625);
var cy = Math.floor(145 + yIndex * 41.1428571428571 - adjustY);
var top = Math.floor(Math.sin(Math.PI / 3) * 22);
var left = Math.floor(Math.sin(Math.PI / 6) * 22);
for(var py = -top; py <= top; py++) {
var sx = Math.floor(-22 + (Math.abs(py) / 19.0) * (22 - left));
for(var px = sx; px < -sx; px++) {
var x = cx + px;
var y = cy + py;
var base = (y * image.width + x) * 4;
var glay = (data[base + 0] + data[base + 1] + data[base + 2]) / 3 * 0.7;
data[base + 0] = glay;
data[base + 1] = glay;
data[base + 2] = glay;
}
}
}
}
}
context.putImageData(imageData, 0, 0);
container.insertBefore(canvas, image);
container.removeChild(image);
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。