だから私が自分自身のために作った挑戦はそのようなものです.
ソース写真があります:
色の値をマッピングし、div を使用してピクセル化された表現を作成していること
結果は次のとおりです。
私がこれを達成しているコードは次のとおりです。
'use strict';
var imageSource = 'images/unicorn.jpg';
var img = new Image();
img.src = imageSource;
var canvas = $('<canvas/>')[0];
canvas.width = img.width;
canvas.height = img.height;
canvas.getContext('2d').drawImage(img, 0, 0, img.width, img.height);
var context = canvas.getContext('2d');
console.log('img height: ' + img.height);
console.log('img width: ' + img.width);
var pixelDensity = 70;
var timerStart = new Date();
for (var i = pixelDensity/2; i < img.height; i += (img.height/pixelDensity) ) {
$('.container').append($('<div class="row">'));
for(var j = pixelDensity/2; j < img.width; j += img.height/pixelDensity) {
var value = context.getImageData(j, i, 1, 1).data;
var colorValue = 'rgb(' + value[0] + ', ' + value[1] + ', ' + value[2] + ')';
$('.row:last').append($('<div class="block">').css({'background-color' : colorValue}));
}
}
var timerStop = new Date();
console.log(timerStop - timerStart + ' ms');
pixelDensity 変数は、カラー サンプルがどの程度接近しているかを制御します。数値が小さいほど、サンプル数が少なくなり、結果を生成するのにかかる時間が短くなります。数を増やすと、サンプルが増え、関数の速度が大幅に低下します。
何がこれほど長い時間をかけているか知りたいです。画像データをはるかに高速に処理する、わずかに類似したプロジェクト (特にJscii ) を見てきましたが、パフォーマンスが向上している違いが何であるかはわかりません。
ご協力いただきありがとうございます!