添加触摸坐标和像素颜色显示

时间:2016-02-08 12:46:13

标签: android image colors coordinates rgb

我当前的代码允许您拍摄图像并将其显示在图像视图中。如何实现触摸图像上任何位置并在该像素上显示颜色的功能,然后颜色将填充一个实体对象(如矩形)以显示它是什么。我希望解决方案包含RGB值,因为我以后需要它们用于我的应用程序。

import android.app.Activity;
    import android.content.Intent;
    import android.graphics.drawable.Drawable;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.provider.MediaStore;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ImageView;


    import java.io.File;

    public class MainActivity extends Activity {

        private static final int CONTENT_REQUEST = 1337;
        private File output = null;
        Button button;
        ImageView imageView;


        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button = (Button) findViewById(R.id.CameraButton);
            imageView = (ImageView) findViewById(R.id.Image_view);
            button.setOnClickListener(new View.OnClickListener() {


                public void onClick(View v) {

                    Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

                    output = new File(dir, "COMP4Image.jpeg");
                    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));

                    startActivityForResult(i, CONTENT_REQUEST);

                }

            });
        }

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/COMP4Image.jpeg";
            imageView.setImageDrawable(Drawable.createFromPath(path));
        }


    }

1 个答案:

答案 0 :(得分:0)

我不会提供代码,但解决方案很容易实现。

在ImageView中添加View.OnTouchListener

此监听器将响应View上发生的每一个触摸事件。 (触地,移动,修饰等......)

您可以使用MotionEvent.getX(int)(和y等效值)检索事件的坐标。 (阅读MotionEvent documentation以了解有关指针的更多信息)。

当您拥有触摸事件的X和Y坐标时,您可以使用Bitmap.getPixel(int, int)获取位图中指向像素的像素颜色(请参阅here以获取Bitmap到你的ImageView)。

瞧,你有选择的颜色。只需将其打印到图像视图下方的矩形视图中,然后使用Color实用程序类提取所选颜色的ARVB组件。

希望这有帮助。