画像があり、すべての緑色のピクセルを削除しようとしています。どのように私は単純なJavaと2D配列を使用してこれを行うのですか?画像の緑色のピクセルをjavaを使用して置き換えます。
はこれまでのところ、私のコードは次のようになります。
public void removeGreen() {
Picture pic = new Picture("IMG_7320.JPG");
Pixel pixel = null;
for (int row = 0; row < pic.getHeight(); row++) {
for (int col = 0; col < pic.getWidth(); col++) {
pixel = getPixel(row,col);
pixel.getColor();
if(pixel.getRed() < 40 & pixel.getBlue() < 160 & pixel.getGreen() > 220) {
Color white = new Color(255,255,255);
pixel.setColor(white);
}
}
}
}
(私は完全にピクセルを削除するかどうかはわかりませんので、今のところ私は白画素と緑色画素を交換しようとしています。)
そして、私はremoveGreen()メソッドをテストするために使用しています私のメインメソッドのコードは、次のようになります。
//method to test removeGreen
public static void testRemoveGreen() {
Picture me = new Picture("IMG_7320.JPG");
me.explore();
me.removeGreen();
me.explore();
}
だから、私のコードは次のようになります(int型の列= 0のため
ます。public void removeGreen(ピクチャーPIC){
。行< pic.getHeight();行++){
for (int col = 0; col < pic.getWidth(); col++) {
Pixel pixel = pic.getPixel(row,col);
if((pixel.getRed() < 40) && (pixel.getBlue() < 160) && (pixel.getGreen() > 220)) {
Color white = new Color(255,255,255);
pixel.setColor(white);
}
}
}}
と私の主な方法が依然として同じです。私はまだ方法が適切に動作していない理由を理解していない。
他の画像のピクセルに置き換える必要がありますか?緑色の画面の種類?あなたの質問を明確にする。画像のサイズを変更せずに画像からピクセルを削除することは決してできません。作業している画像フォーマットがアルファチャンネルをサポートしていると仮定すると、できるだけ透明にすることができます。 – Havenard
また、データを収集してイメージ「this」を修正している間に、イメージ「pic」を繰り返しているように思えます。 – Havenard