2017-03-11 29 views
1

アップロードされた画像にグレーのフィルタを追加したいのですが、img.filter(GRAY、0.3)を使用しても機能しません。私はimgがp5要素であることを知っています。画像ソースのみを選択し、アップロードした画像にフィルタを追加する方法はありますか?p5.js:アップロードした画像にフィルタを追加する

var img,canvas; 
 

 
function setup(){ 
 
    var uploadBtn = createFileInput(imageUpload); 
 
    canvas=createCanvas(500,400); 
 
} 
 
function imageUpload(file){ 
 
    img = loadImage(file.data,function(){ 
 
     image(img,0,0,width,height); 
 
     img.filter(GRAY,0.5); 
 
    }) 
 
    
 
}
<script src="https://github.com/processing/p5.js/releases/download/0.5.7/p5.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/addons/p5.dom.min.js"></script>

答えて

2

あなたはimage.When imageUpload()機能を表示した後、フィルタを適用するためですと呼ばれ、image(img,0,0,width,height);が実行され、img画像がページに表示されている、しかしそれは、静的draw()のように更新されず、画像を表示した後に画像フィルタを適用しても何も変更されません(静的なため画像は更新されません)。 draw()に完全に同じコードを書いていれば、それは繰り返し呼び出されるため動作します。この問題を解決するには、単純に画像を表示する前にグレーのフィルタを適用します。

var img,canvas; 
 

 
function setup(){ 
 
    var uploadBtn = createFileInput(imageUpload); 
 
    canvas=createCanvas(500,400); 
 
} 
 
function imageUpload(file){ 
 
    img = loadImage(file.data,function(){ 
 
     img.filter(GRAY,0.5); 
 
     image(img,0,0,width,height);    
 
    })   
 
}
<script src="https://github.com/processing/p5.js/releases/download/0.5.7/p5.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.7/addons/p5.dom.min.js"></script>

+0

は、私は少しあなたの答えを言い替えるう:それは() '一度だけ呼び出されimageUpload'ためではありません。 OPが画像を描いた後でフィルタを適用しているからです。そうでなければ、これは正解です。 –

+0

はい、私はそれを繰り返し述べているdraw()と対照することを言いましたので、OPが書いたことは実際に 'draw()'で動作します。ありがとう! –

+1

イメージの後にフィルタのみを追加するとhttp://p5js.org/reference/#/p5/filter - image(img、0,0、width、height);フィルタ(THRESHOLD、0.5)あなたの答えをありがとう。 – FBR

関連する問題