gpt4 book ai didi

Android Bitmap.getPixel 总是返回负值

转载 作者:行者123 更新时间:2023-11-29 21:45:13 26 4
gpt4 key购买 nike

我是使用 Android 的新手,现在已经为这个问题努力了四天。我非常感谢有人的帮助。

我在 ImageView 中有一张图片,我想获取用户触摸的图片部分的颜色。为此,我正在使用 Bitmap.getPixel() 函数。问题是,这个函数的返回值总是负数,正如文档所说,这是错误的。我没有得到正确的颜色值,而且我确实尝试过几种方法(RGB、HSV...)。有人可以解释一下吗,为什么我的 Bitmap.getPixel() 函数一直返回负值?提前致谢。

这是我的 .java 代码:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

final ImageView imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setOnTouchListener(new ImageView.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
Drawable imgDrawable = ((ImageView)imageView).getDrawable();
Bitmap mutableBitmap = Bitmap.createBitmap(imageView.getWidth(), imageView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(mutableBitmap);
imgDrawable.draw(canvas);
int pixel = mutableBitmap.getPixel((int)event.getX(), (int)event.getY());
Log.i("PIXEL COLOR", ""+pixel);

int alpha = Color.alpha(pixel);
int red = Color.red(pixel);
int blue = Color.blue(pixel);
int green = Color.green(pixel);
String color = String.format("#%02X%02X%02X%02X", alpha, red, green, blue);
Log.i("RGB", color);

float[] hsv = new float[3];
Color.RGBToHSV(red, green, blue, hsv);
Log.i("HSV_H", "Hue=" + hsv[0]);
Log.i("HSV_H", "Saturation=" + hsv[1]);
Log.i("HSV_H", "Value=" + hsv[2]);
}
return true;
}
});
}

这是我的 .xml 代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
android:src="@drawable/lapices" />

</LinearLayout>

最佳答案

这可能是因为它不是 BitmapDrawable

在这里查看 https://stackoverflow.com/a/16037415/906362在我的回答中,将 Drawable 放入 Bitmap 的正确方法。

编辑:

试试这个:

Drawable imgDrawable = ((ImageView)imageView).getDrawable();
Bitmap mutableBitmap = Bitmap.createBitmap(imageView.getWidth(), imageView.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(mutableBitmap);
imgDrawable.draw(canvas);
int pixel = mutableBitmap.getPixel((int)event.getX(), (int)event.getY());

关于Android Bitmap.getPixel 总是返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16038369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com