画像からピクセル配列を抽出する方法
Java では、BufferedImage から int[][] 配列としてピクセル データを取得することで、特定のピクセルに直接アクセスします。これを実現する方法は次のとおりです。
BufferedImage の getRGB() メソッドを使用する
このメソッドは、アルファ、赤、緑、青の値を単一の int に結合し、それを返します。個々のカラーコンポーネントを抽出するには、カラーマスクを取得し、それに応じて値をシフトする必要があります。このアプローチは比較的単純ですが、最も効率的というわけではありません。
ピクセル配列への直接アクセス
次のコードを使用すると、ピクセル配列にバイトとして直接アクセスできます。 array:
byte[] pixels = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
このメソッドは、特に大規模な場合、getRGB() メソッドよりも大幅に高速です。
パフォーマンスの比較
パフォーマンスの違いを実証するために、12,000 x 12,000 ピクセルの画像を使用してテストが実施されました。次の表は、2 つのメソッドの実行時間を比較しています。
Method | Average Time |
---|---|
getRGB() | 16 seconds |
Direct Access | 1.5 seconds |
結論
DataBufferByte クラスを使用してピクセル配列に直接アクセスすることは、ピクセルを効率的に行うために推奨されるアプローチです。操作。 getRGB() メソッドと比較して、特に大きな画像を扱う場合にパフォーマンスが大幅に向上します。
以上がJava で BufferedImage からピクセル データを配列として効率的に抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。