ホームページ > Java > &#&チュートリアル > Java BufferedImage から 2D ピクセル配列を効率的に取得するにはどうすればよいですか?

Java BufferedImage から 2D ピクセル配列を効率的に取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-28 09:28:11
オリジナル
457 人が閲覧しました

How Can I Efficiently Get a 2D Pixel Array from a Java BufferedImage?

Java - 画像から 2D ピクセル配列を取得

BufferedImage からピクセル値の配列を取得するのは時間のかかるタスクですが、特定のメソッドを使用すると処理時間が短縮されます.

1 つのアプローチは、ネストされたループで BufferedImage.getRGB() を利用することです。これは、アルファ、レッド、緑と青の値を単一の整数に変換します。ただし、この方法は、大きな画像やパフォーマンス重視のアプリケーションには理想的ではありません。

あるいは、((DataBufferByte)bufferedImage.getRaster().getDataBuffer()).getData() を使用してピクセル配列に直接アクセスすることは、非常に手間がかかります。もっと早く。このアプローチでは、赤、緑、青の値に直接アクセスでき、オプションでアルファ チャネルも含めることができます。

大規模な 12000x12000 ピクセルの画像を使用してパフォーマンスを比較したところ、直接ピクセル アクセス方法を使用した場合に顕著な改善が見られました。 getRGB() アプローチでは実行ごとに約 16 秒かかりましたが、ピクセル配列に直接アクセスすると処理時間はわずか 1 ~ 2 秒に短縮されました。

2 つのアプローチを比較したコード スニペットは次のとおりです。

import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

...

// First method: Using BufferedImage.getRGB()
int[][] result1 = convertTo2DUsingGetRGB(hugeImage);

// Second method: Accessing pixel array directly
int[][] result2 = convertTo2DWithoutUsingGetRGB(hugeImage);

...

private static int[][] convertTo2DUsingGetRGB(BufferedImage image) {
    ...
    for (int row = 0; row < height; row++) {
        for (int col = 0; col < width; col++) {
            result[row][col] = image.getRGB(col, row);
        }
    }
    ...
}

private static int[][] convertTo2DWithoutUsingGetRGB(BufferedImage image) {
    ...
    final byte[] pixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
    ...
    for (int pixel = 0, row = 0, col = 0; pixel + 3 < pixels.length; pixel += pixelLength) {
        ...
    }
    ...
}
ログイン後にコピー

直接ピクセル アクセス方法を活用することで、特に大きな画像や時間に敏感なアプリケーションを扱う場合、画像処理タスクのパフォーマンスを最適化できます。

以上がJava BufferedImage から 2D ピクセル配列を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート