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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-18 20:31:11600ブラウズ

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

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

画像を操作するとき、そのピクセル データにアクセスする必要がよくあります。この記事では、BufferedImage からピクセル値の 2 次元配列を効率的に取得する手法について説明します。

getRGB() メソッドの利用

一般的なアプローチの 1 つは、getRGB メソッドを使用することです。 BufferedImage が提供する () メソッド。このメソッドは、アルファ、赤、緑、青の値を 1 つの int に結合して返します。この方法は便利ではありますが、複数のバイト操作と整数の結合が必要なため、特に大きな画像の場合は非効率的になる可能性があります。

ピクセル配列への直接アクセス

別のアプローチには次のようなものがあります。 BufferedImage の getRaster() メソッドと getDataBuffer() メソッドを利用して、ピクセル配列に直接アクセスします。これにより、ピクセル データに直接アクセスできるようになり、大きな画像のパフォーマンスが向上します。この手法の欠点は、特定のピクセルにアクセスするために手動でインデックスを計算する必要があることです。

パフォーマンスの比較

パフォーマンスの違いを説明するために、パフォーマンス テスト クラスが作成されました。両方のアプローチを利用します。テストは 12,000 x 12,000 ピクセルの画像で行われます。結果は驚くべきものでした:

convertTo2DUsingGetRGB:

  • 最速の実行: 16 秒 367 ミリ秒
  • 最も遅い実行: 16 秒 911ミリ秒

convertTo2DWithoutUsingGetRGB:

  • 最速実行: 1 秒 487 ミリ秒
  • 最低実行: 2 秒 86ミリ秒

結論

小さな画像の場合は、getRGB() メソッドで十分な場合があります。ただし、大きな画像の場合、ピクセル配列に直接アクセスすると、パフォーマンスが大幅に向上します。このアプローチを選択すると、処理時間を大幅に短縮し、ピクセル関連の操作の効率を向上させることができます。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。