私はキャンバス要素を扱うのが初めてで、全画面画像を描画しようとしてから、ピクセルの変更を行います。このための簡単な方法を書きましたが、画像の読み込みは完全に機能しますが、ブラウザー ウィンドウのサイズ変更は、スロットルを使用しても非常に遅くなります。
キャンバスに画像を描画し、画像フィルター効果を適用する方法は次のとおりです。
drawCanvas:function(obj,src,onResize){
var img=new Image(),
objData=$.data(obj),
canvas=Plugin.OBJ.$Canvas[0],
ctx=canvas.getContext("2d"),
win=$(window),
winW=win.width(),
winH=win.height();
img.src=src;
Plugin.CanvasSRC=src;
img.onload=function(){
var imgW=img.width,
imgH=img.height,
ratio=imgW/imgH;
newH=(Math.round(winW/ratio)<winH)?winH:Math.round(winW/ratio),
winW=(newH<winH)?$win.width():Math.round(newH*ratio);
canvas.width=winW; canvas.height=newH;
ctx.drawImage(img,0,0,winW,newH);
var imgdata=ctx.getImageData(0,0,winW,winH),
pix=imgdata.data,
l=pix.length,
filter=objData.bg_pic_filter;
switch(filter){ ... this section does the pixel manipulation ...};
// APPLY THE FILTER && FADE IN
ctx.putImageData(imgdata,0,0);
};
},
うまくいけば、私はこれからあまり信じられないほど離れていませんが、フルスクリーンのキャンバスに画像を単純に描画するより良い方法があるかどうか疑問に思っていますが、background-size:cover と同様の寸法を維持していますか? これらの画像は、ピクセル操作フィルターも使用しています。キャンバスを再描画して毎回フィルターを再適用することなく、ウィンドウのサイズ変更時にキャンバスのサイズを変更することは可能ですか? ありがとう!