現在、画像の回転が必要なゲームを作っています。それを回転させるために、私は次のコードを使用しています。回転した画像の隅のみを別の色に置き換えます。
public ManipulableImage rotate(double degrees){
BufferedImage rotatedImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D g = rotatedImage.createGraphics();
g.rotate(Math.toRadians(degrees), image.getWidth()/2, image.getHeight()/2);
/*
ManipulableImage is a custom class that makes it easier to manipulate
an image code wise.
*/
g.drawImage(image, 0, 0, null);
return new ManipulableImage(rotatedImage, true).replace(0, -1);
}
コードはイメージを回転しますが、透明にする必要があるコーナーは黒くなります。レンダラーはrgb値-1を透明な値として認識し、その値が存在するときピクセルを変更しません。そこで、コーナーのrgb値を0(黒)から-1(透明)に変更したいと思います。
唯一の問題は、元の画像に黒い他のピクセルがあるため、画像を繰り返して、黒のピクセル を置き換えることができません。だから私の質問は、どのように私は回転によって作成された黒のピクセルだけを置き換えることです。
(私は画像の例を提供することができなかった申し訳ありませんが、私はこのコンピュータでスクリーンショットするかどうかはわかりません。)
あなたは、アルゴリズムその作ってみることができますポイントを与えられて、同じ色のすべての隣人を検索し、次にこの隣人を反復する。コーナーが黒いので、4コーナーで反復を開始すると、4つの黒い領域すべてを取得する必要があります。 – ebeneditos
イメージの端に黒いピクセルがある可能性があるので、それは完璧ではありません。 –
新しい画像の端に回転した元の画像の隅がありますか? – ebeneditos