[英]I can't LogCat this value. Why?
这是一个片段,可以成功地将SD卡上.PNG的高度和宽度读取到Eclipse 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()了。 请帮助。 谢谢。
您必须在循环中进行记录才能记录每个像素。 那是您要记录的地方吗?
如果尝试将其记录在与高度和宽度相同的位置,那么您希望记录哪个像素值? 如果图像为空怎么办? 如果这是您要尝试执行的操作,则该错误可能是由于使用未初始化的变量而引起的……但是该错误只会导致更深层的问题,即您到底想做什么。
编辑:好的,事实证明这稍有不同-这是一个很好的示例,说明为什么重要的是给出失败的代码以及未失败的代码,并说出错误消息是什么。
因此,您尝试使用此签名来调用方法:
void v(String, String)
但是您试图这样称呼它:
Log.v(TAG, R);
试图将int
作为String
传递。 您需要将int
值转换为字符串。 IMO,最好的方法是使用String.valueOf
:
Log.v(TAG, String.valueOf(R));
话虽如此,如果您进行任何字符串连接,编译器都会为您添加转换。 因此,您可以执行以下任一操作:
Log.v(TAG, R + " " + G + " " + B);
Log.v(TAG, "Red: " + R);
附带说明一下,我强烈建议,如果这给您带来了麻烦,那么值得读一本不错的Java入门书籍-一本不关注Android的书籍,并尝试编写一小段Java控制台应用程序。 在不尝试同时学习某种语言的情况下,很难学习如何在新的客户端平台上进行开发。 通过在语言上花更多时间,从长远来看,您可能会节省精力。
哦。 解决:java.lang.String有一个valueOf方法。 (我也是Java的新手。)感谢Jon。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.