-2

Java または Processing で次のイメージ スケール プロシージャを効率的に実装する方法を考えていました。スケールアウトすると、画像の境界が画面の端に回り込みます。実行時に同じことを処理中の Pixels() 配列に適用したいと思います。(この処理にとらわれないようにするため - Pixels() は、現在の画面上のすべてのピクセルを配列で返すメソッドに他なりません)。

(この例は、非常に効率的な実装を使用しているように見える jit.rota モジュールを使用して、MaxMsp/Jitter で作成されたことに注意してください)。

スケーリングされていない

ズームアウト

始める方法を教えてくれる人はいますか? 画像の縮小と隣接するコピーの作成の組み合わせである必要があると思いますが、これはあまり効率的ではないように思えます。上記の例は、最も極端な設定のビデオでも完全に機能します。

4

2 に答える 2

0

私は効果的に解決策を思いつきましたが、シェーダーを使用した速度の違いはそれだけの価値があるように思われるため、次にジョージの方法を実装します!

public void scalePixels(double wRatio,double hRatio, PGraphics viewPort) {
    viewPort.loadPixels();
    int[] PixelsArrayNew = viewPort.pixels.clone();
    double x_ratio = wRatio ;
    double y_ratio = hRatio ;
    double px, py ;
    for (int i=0;i<viewPort.height;i++) {
        for (int j=0;j<viewPort.width;j++) {
            px = Math.floor(j%(wRatio*viewPort.width)/x_ratio) ;
            py = Math.floor(i%(hRatio*viewPort.height)/y_ratio) ;
            viewPort.pixels[(int)(i*viewPort.width)+j] = PixelsArrayNew[(int)((py*viewPort.width)+px)] ;
        }
    }
    viewPort.updatePixels();    
}
于 2016-11-26T14:41:25.190 に答える