1

私がやろうとしている画像フィルタリングでいくらかの速度低下があります。私が行った変更をキャッシュするだけで、私が抱えている問題を解決できます。ただし、実装する前に、最初にキャッシュせずにできる限りこれを最適化したいと思います。基本的に、再描画ごとに約 64x64 ピクセルの複数の個別の画像を変更しているため、低速です。私が言ったように、キャッシュはこれを修正しますが、最初に他の方法を最適化したい.

私が考えたアイデアは次の2つです。

1.画像のコピーを減らす

変更したい画像が既にあり、その一部として画像に保存されています。つまり、スプライト シートがメモリに読み込まれているため、新しい描画用に変更したい画像の部分があります。最初に画像を新しいキャンバスに描画してから、そこから imageData を取得するのではなく、画像から直接 imageData を取得する方法はありますか? イメージをキャンバスにコピーしてから、getImageData を介してピクセル データを取得するのは効率が悪いようです。

2. putImageData の代わりに drawImage を使用する

drawImage は putImageData よりもはるかに高速のようです。しかし、drawImage を使用して変更したピクセル データをキャンバスに描画し、putImageData を完全に回避する方法が見つかりません。方法はありますか?

ありがとう

4

1 に答える 1

1

1: いいえ。画像データを取得するには、キャンバスに画像を描画する必要があります。

2: putImageData 以外を使用して imagedata を描画することはできません。あなたが言うように、それを新しいキャンバスまたは画像にキャッシュすることがこれに対する解決策です。イメージを描画できるように、drawImage を使用して別のキャンバスを描画できます。

于 2012-12-02T13:18:19.197 に答える