2010-06-30 150 views
0

这里有一个剪断,成功地读完,到Eclipse的logcat,高度和.PNG的宽度在SD卡上:我不能LogCat这个值。为什么?

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Environment; 

//... 

     Bitmap bmp = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/sample.png"); 
     int width = bmp.getWidth(); 
     int height = bmp.getHeight(); 
     int[] pix = new int[width * height]; 
     bmp.getPixels(pix, 0, width, 0, 0, width, height); 

     int R, G, B; 

     for (int y = 0; y < height; y++){ 
      for (int x = 0; x < width; x++) 
      {    
       int index = y * width + x; 

       R = (pix[index] >> 16) & 0xff;  //bitwise shifting 
       G = (pix[index] >> 8) & 0xff; 
       B = pix[index] & 0xff; 

    // [This is where I'd put it. But I can't get a red line off the editor when I do anything.] 
      } 
     } 

     Log.v(TAG, width + " " + height); 

我的问题:我不能为我的生活使用Log.v ()来报告R或G或B的值。当我尝试时,我正在做的所有事情都会在v之下绘制一条红线。我试过toString()和一切。请帮助。谢谢。

回答

1

您必须在内记录才能记录每个像素。那是你试图登录的地方吗?

如果您尝试将其记录在与高度和宽度相同的位置,那么您希望记录哪个像素值?如果图像是空的呢?如果这是你想要做的事,那么错误就是由于使用了未初始化的变量......但是这个错误只会导致你正在尝试做的更深的问题。

编辑:好吧,原来它略有不同 - 这是一个很好的例子,说明为什么重要的是要给失败的代码以及不是的代码,并说错误消息是什么。

所以,你试图调用这个签名的方法:

void v(String, String) 

但你试图调用它是这样的:

Log.v(TAG, R); 

正试图通过一项intString 。您需要将int值转换为字符串。 IMO,要做到这一点的最好办法是String.valueOf

Log.v(TAG, String.valueOf(R)); 

话虽如此,如果你做任何字符串连接,编译器将添加转换为您服务。所以,你可以做以下任一:

Log.v(TAG, R + " " + G + " " + B); 
Log.v(TAG, "Red: " + R); 

作为一个方面说明,我会强烈建议,如果这是给你一个困难时期,这将是值得一读一个很好的介绍Java的书 - 其中一个没有按” t专注于Android - 并尝试编写小型Java控制台应用程序一段时间。很难学习如何在新的客户端平台上开发,而无需同时学习语言。通过预先在语言中多花一点时间,从长远来看,您可能会节省工作量。

+0

我已经添加了我将Log.v放在哪里,如果它工作。这里的问题是:我在那里做的任何事情都无法让R或G或B在Eclipse编辑器中使用语句中的某些内容而没有使用红线。我不知道该写什么。试试这个,如果你可以在添加了snip的HelloAndroid上(以及可执行的导入),因为我无法获得一个语句来报告TGB值。感谢您的帮助。 – user225626 2010-06-30 06:30:19

+0

@ user225626:在那里应该没问题。请显示您尝试使用的确切行*和* Eclipse向您显示的错误消息。 – 2010-06-30 06:35:40

+0

'RGB',而不是'TGB'。现在这里的评论编辑正在按照我的方式。 (几分钟后不允许我编辑) – user225626 2010-06-30 06:37:26

0

哦。解决方法:java.lang.String有一个valueOf方法。 (我也是Java新手。)感谢Jon。

相关问题