私はPImageクラスを使っています。通常は2つのPImageオブジェクトを作成し、そのうちの1つ(私の入力画像)に画像をロードし、createImage()を使用して空の画像を作成します。次に、loadPixels()メソッドを使用して入力上のデータにアクセスし、いくつかの操作を行い、それぞれの出力ピクセルを結果に設定します。これまでのところ私は何の問題もありませんでした。は、setup()の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);
}
上記の結果は、私が書いたコードを考える350 X 350のグレーキャンバスに重なる黒四角300×300であり、これは私が期待する結果です。
myoutput = createImage(300, 300, RGB);
私の質問は以下のビットに関する::
の代わりにハードコードさて、上記の例では、私はラインで「myoutput」の幅と高さをハードコードしまし
値は、私はむしろこのような何かをしたい:
myoutput = createImage(myinput.width, myinput.height, RGB);
しかし、それは動作していません。私はちょうど大きな350×350の灰色のボックスを取得します。そして私はなぜそれがわからない。私は疑いがある。私はJavaScriptの画像を扱うときに、画像の幅/高さのプロパティにアクセスする前に、ページが読み込まれるのを待っています(window.onload(){}などのイベントリスナーを使用しています)。
UPDATE: 私は次のように持っていた別のポストを見た:
/* @pjs preload="myfile.jpg"; */
私はPImageオブジェクトを宣言する前に、だから私はちょうどこれを含め、現在、以下の行が動作します。
myoutput = createImage(myinput.width, myinput.height, RGB);
私は新しいコードでかなり混乱しています。
私はProcessing.jsを使用してこのコードを実行しているので、私は 'preload'コマンドが必要です。このコードは画像を非同期的に読み込む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