तो चुनौती जो मैंने स्वयं के लिए बनाई है वह इस तरह है।जावास्क्रिप्ट - छवि डेटा प्रोसेसिंग और div प्रतिपादन
:Source Photo http://f.cl.ly/items/012t1M250f0T101F2L0n/unicorn.jpg
मैं रंग मान मैप है और इसका एक pixelated प्रतिनिधित्व बनाने हूँ कि divs का उपयोग कर
यहाँ परिणाम है:
मैं एक स्रोत तस्वीर है
कोड जो मैं इसे पूरा कर रहा हूं वह है:
'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');
पिक्सेलडेंसी चर नियंत्रण रंग के नमूने एक साथ कितने करीब हैं। संख्या जितनी छोटी होगी, उतने कम नमूने, परिणाम देने के लिए कम समय लेते हैं। जैसे ही आप संख्या बढ़ाते हैं, नमूने ऊपर जाते हैं और फ़ंक्शन काफी धीमा हो जाता है।
मुझे यह जानकर उत्सुकता है कि यह चीज़ इतनी लंबी अवधि क्यों ले रही है। मैंने थोड़ा समान परियोजनाओं को देखा है - सबसे विशेष रूप से Jscii - जो छवि डेटा को बहुत तेज़ी से संसाधित करता है, लेकिन मैं यह नहीं समझ सकता कि इसमें क्या अंतर है जो अतिरिक्त प्रदर्शन की पेशकश कर रहा है।
आपकी मदद के लिए धन्यवाद!
जब तक आपको करना नहीं है तब तक डोम को स्पर्श न करें। अपना ऑफस्क्रीन ऑब्जेक्ट मॉडल बनाएं और फिर इसे एक बार संलग्न करें। संभवतः, अधिक नमूने, अधिक divs, अधिक डोम संपादन। तो, इसे सभी ऑफस्क्रीन बनाया, इसे एक बार में एक साथ जोड़ दें। –
यही वह है जो मैं मूल रूप से कर रहा था, लेकिन मुझे लगता है कि छवि डेटा खींचने में सबसे अधिक समय लग रहा था। मैं इसे फिर से सलाह दी फिर से कोशिश करूँगा। सहायता के लिए धन्यवाद! – tylerdavis
एक और बात। जब आप संभव प्रदर्शन के हर बिट को बाहर निकालने की कोशिश कर रहे हैं, तो हर छोटी चीज मदद करता है। पाश की स्थिति के लिए अपने कैश करें। 'के लिए (var j = pixelDensity/2; j