2013-12-23 49 views
2

我已經編寫了用於android上的圖像處理的java。我嘗試構建在圖像特定區域平均顏色的方法。我發現了一些相同的警告,我真的不知道如何解決它。例如,警告告訴我「局部變量的值」紅色「沒有使用」,所以在第一個我通過在頂部聲明int紅色來解決,但它不能修復。 「紅色」,「綠色」,「藍色」,「xImage」,「yImage」都是一樣的。另外,TextView在每個變量中都顯示零。Java(android):如何在特定區域平均rgb

如果我把紅色返回< < 16 |綠色< < 8 |藍色;該警告丟失,但TextView仍顯示爲零。

這裏是java代碼。請幫助我T^T。

import java.io.File; 

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 

import android.os.Bundle; 
import android.os.Environment; 
import android.widget.ImageView; 
import android.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; 

} 

} 

回答

2

您聲明 int xImage,yImage,red,green,blue; 但你沒有使用它們。

因此,你得到了警告。

因爲您在AverageColor的函數中再次聲明瞭局部變量(xImage,yImage,紅色,綠色,藍色)。你可以去掉AverageColor函數中的「int」。

+0

非常感謝。它真的工作:-) – user3101751