2017-06-04 1 views
1

In p5.js versuche ich, jedes Pixel eines Bildes für ein persönliches Projekt zu verarbeiten, also dachte ich, ich würde langsam anfangen und einfach versuchen, jedes Pixel schwarz zu machen. Aus irgendeinem Grund bleibt der Bildschirm nur weiß und ich habe keine Ahnung, warum die Pixel nicht aktualisiert werden. Hier ist der Code:Sollte dieser Code nicht das ganze Bild schwarz machen?

var Canvas; 
var srcImg; 
var defaultImg = "http://i.imgur.com/ARg0OOy.jpg"; 

function preload() { 
srcImg = loadImage(defaultImg); 
} 

function setup() { 
    createCanvas(srcImg.width,srcImg.height); 
    noLoop(); 
} 

function draw() { 
    srcImg.loadPixels(); 
    for (var x = 0; x < srcImg.width; x++) { 
    for (var y = 0; y < srcImg.height; y++) { 
     var loc = x + y*srcImg.width; 
     srcImg.pixels[loc] = color(224,29,29); 
    } 
    } 
    console.log(loc); 
    console.log(srcImg.width); 
    console.log(srcImg.height); 
    console.log(srcImg.width * srcImg.height); 
    srcImg.updatePixels(); 
    //image(srcImg, 0,0,srcImg.width, srcImg.height); 
} 

Auch, wenn ich die letzte Zeile Kommentar-, ich sehe das Originalbild, und es ist an der Spitze abgeschnitten (und es hat nicht jedes Pixel schwarz worden). Sie können sich selbst sehen here. Irgendwelche Gedanken darüber, warum das passiert?

Edit: Ich habe versucht, sogar eine Reihe von Pixeln zu einer lebendigen roten Farbe zu machen und der Grund, warum ich einen weißen Bildschirm bekomme, ist egal, welche Farbe ich die Pixel setze, werden sie weiß ... Auch Als ich versuchte, die ganze Reihe diese rote Farbe zu machen, blieb sie bei ungefähr 1/4 der Strecke wie gezeigt here (und ist immer noch weiß). Ich weiß nicht, warum das passiert.

Antwort

3

Sie machen alle Pixel schwarz, aber dann zeichnen Sie srcImage über diese schwarzen Pixel. Alles, was Sie sehen, ist srcImage.

Versuchen Sie, die image(srcImg, 0,0,srcImg.width, srcImg.height); Zeile zu kommentieren, um die schwarzen Pixel zu sehen.

+0

Hmm, aber würde 'updatePixels() 'das Original' srcImg' nicht überschreiben, wodurch es schwarz wird? Wie auch immer, ich habe versucht, es zu kommentieren und jetzt erscheint nichts auf dem Bildschirm. –

+0

@AlexHutman Warum überschreibt 'updatePixels()' das ursprüngliche 'srcImage'? Und nichts ist genau das, was auf dem Bildschirm erscheinen sollte - Sie zeichnen nur schwarze Pixel. –

+0

Oh, mein Fehler. Ich dachte, 'updatePixels()' würde die Pixel des Bildes verändern, nicht die Leinwand. Als ich sagte, dass nichts auf dem Bildschirm erscheint, meinte ich, ich hätte einen komplett weißen Bildschirm. Es gibt kein Schwarz. –

Verwandte Themen