我正在使用PImage類。通常我製作2個PImage對象,將圖像加載到其中一個(我的輸入圖片)中,並使用createImage()創建一個空白圖像,這將成爲輸出。然後,我使用loadPixels()方法來訪問輸入數據,做一些操作,然後將相應的輸出像素設置爲結果。到目前爲止,我還沒有遇到任何麻煩。無法訪問安裝程序中的PImage對象的寬度/高度屬性()
輸入和輸出PImage對象的尺寸必須相同,以使像素逐像素操作儘可能直線前進。
因此,這裏的鹹菜:
PImage myinput;
PImage myoutput;
void setup() {
size(350, 350);
myinput = loadImage("myfile.jpg");
// the pic is 300 x 300
//myoutput = createImage(myinput.width, myinput.height, RGB);
//I've hardcoded the width and height below
myoutput = createImage(300, 300, RGB);
}
void draw() {
image(myoutput, 0, 0);
}
上述結果是一個黑色的正方形300×300重疊鑑於我寫代碼的350×350灰色帆布,這是我期望的結果。現在
,在上述例子中,我硬編碼與「線MyOutput中」的寬度和高度:
myoutput = createImage(300, 300, RGB);
我的問題涉及下面的位:
代替硬編碼的值,我寧願做這樣的事情:
myoutput = createImage(myinput.width, myinput.height, RGB);
但它不工作。我只得到一個350 x 350的大灰盒子。我不知道爲什麼。雖然我有我的懷疑。當我使用JavaScript處理圖片時,我需要等待頁面加載(使用像window.onload(){}等事件監聽器等)才能訪問圖像的寬度/高度屬性。
更新: 我看到了另一個帖子裏面有以下幾點:
/* @pjs preload="myfile.jpg"; */
所以我只包括在此之前,我宣佈我PImage對象,現在下面的行工作。
myoutput = createImage(myinput.width, myinput.height, RGB);
我對這段新代碼非常困惑。
所以我需要'preload'命令,因爲我正在使用Processing.js運行此代碼,該代碼讀取爲JavaScript異步加載圖像。這對我來說很好,但是我對命令的語法感到困惑,因爲'/ * * /'是我一直用在javascript中的大量註釋。它在處理過程中有不同的含義嗎?並且'preload'是一個Java命令? – Jozurcrunch
@Jozurcrunch這有點令人困惑,因爲它不是真正的Java或JavaScript。它特定於Processing.js。從技術上講,這是對Java和JavaScript的評論(所以它基本上被Java和JavaScript忽略),但Processing.js本身檢測它並加載圖像。更多信息可以在[Processing.js參考](http://processingjs.org/reference/preload/)中找到。 –
這是很好的知道。那麼我認爲這是Processing.js的一個怪癖嗎?與其根本的東西相反? – Jozurcrunch