2

私は画像を色でカットする小さなプログラムを開発しています。

これは、このサンプル画像を使用して説明するのが最も簡単です。

紫色の斑点のある黒

そして、黒い枠を使わずに、紫色の形だけで新しい画像を作成したいと思います。

誰かアイデアはありますか?私はJava2Dを使用しているので、最初の画像の紫色の領域でオブジェクト「形状」を作成する必要があると思います。

4

2 に答える 2

5

画像が文字通りあなたが表示するものと似ている場合は、次のことができます。

  • 画像をBufferedImageにロードします(ImageIO.read()を使用)
  • 同じサイズの新しいBufferedImageを作成し、アルファレイヤーがあることを確認します(たとえば、タイプをBufferedImage.TYPE_4BYTE_ABGRに設定します)
  • ロードされたBufferedImageで「手動」で各ピクセルを順番に調べ、getRGB()でピクセルの色を取得し、それが黒かどうかを確認します
  • 色が黒の場合は、対応するピクセルを新しい画像で透明に設定し、そうでない場合は、最初の画像の元の色に設定します(setRGB()メソッドを参照)。
  • 新しい画像を保存します(ImageIO.write()を使用)

より洗練された方法がありますが、この単純な方法は素晴らしく理解しやすく、表示したタイプの画像には問題なく機能します。

于 2010-05-05T11:21:45.843 に答える
2

紫色の領域の境界を見つけるフラッドフィルアルゴリズムを使用する必要があります。

ウィキペディアには、優れた擬似コードとアニメーションを含むページがあります。

http://en.wikipedia.org/wiki/Flood_fill

于 2010-05-05T11:20:41.733 に答える