有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java(安卓):如何在特定区域平均rgb

我已经为安卓上的图像处理编写了java。我尝试建立一种方法来平均图像特定区域的颜色。我发现了一些同样的警告,我真的不知道如何解决它。例如,警告告诉我“未使用局部变量“red”的值”,因此在第一个示例中,我通过在顶部声明int red来解决,但它无法修复。“红”、“绿”、“蓝”、“喜玛吉”、“意玛格”都是一样的。此外,TextView在每个变量中显示零

如果我把return换成红色<&书信电报;16 |绿色<&书信电报;8 |蓝色;警告已丢失,但TextView仍然显示为零

下面是java代码。请帮帮我

import java.io.File;

import 安卓.app.Activity;
import 安卓.graphics.Bitmap;
import 安卓.graphics.BitmapFactory;

import 安卓.os.Bundle;
import 安卓.os.Environment;
import 安卓.widget.ImageView;
import 安卓.widget.TextView;

public class ProcessPic extends Activity {

int xImage,yImage,red,green,blue;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_process);


    String path = Environment.getExternalStorageDirectory()+ "/TestProcess/picture.jpg";
    File imgFile = new File(path);

    Bitmap myBitmapPic = BitmapFactory.decodeFile(imgFile.getAbsolutePath());                  
    ImageView myImage = (ImageView) findViewById(R.id.my_image);
    myImage.setImageBitmap(myBitmapPic);
    ProcessPic test = new ProcessPic();
    test.AverageColor(myBitmapPic, 0, 200, 0, 200);


    TextView tv1 = (TextView)findViewById(R.id.textView1);
    TextView tv2 = (TextView)findViewById(R.id.textView2);
    TextView tv3 = (TextView)findViewById(R.id.textView3);
    TextView tv4 = (TextView)findViewById(R.id.textView4);
    TextView tv5 = (TextView)findViewById(R.id.textView5);

    tv1.setText(Integer.toString(xImage));
    tv2.setText(Integer.toString(yImage));
    tv3.setText(Integer.toString(red));
    tv4.setText(Integer.toString(green));
    tv5.setText(Integer.toString(blue));

}

public void AverageColor (Bitmap myBitmap,int minw, int maxw,int minh, int maxh){

    int xImage = myBitmap.getWidth();
    int yImage = myBitmap.getHeight();

    int red = 0;
    int green = 0;
    int blue = 0;
    int count = 0;

    for (int i=minw;i<maxw;i++){
        for (int j=minh;j<maxh;j++){
            int pixel = myBitmap.getPixel(i,j);

            red += pixel >> 16 & 0xFF;
            green += pixel >> 8 & 0xFF;
            blue += pixel & 0xFF;

            count++;        

        }
    }
    red /= count;
    green /= count;
    blue /= count;
    //return red << 16 | green << 8 | blue;

}

}

共 (1) 个答案

  1. # 1 楼答案

    你宣布 int xImage、yImage、红色、绿色、蓝色; 但是你没有用它们

    因此,你得到了警告

    因为您在AverageColor函数中再次声明了局部变量(xImage、yImage、red、green、blue)。您可以删除AverageColor函数中的“int”