我当前的代码允许您拍摄图像并将其显示在图像视图中。如何实现触摸图像上任何位置并在该像素上显示颜色的功能,然后颜色将填充一个实体对象(如矩形)以显示它是什么。我希望解决方案包含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));
}
}
答案 0 :(得分:0)
我不会提供代码,但解决方案很容易实现。
在ImageView中添加View.OnTouchListener
。
此监听器将响应View
上发生的每一个触摸事件。 (触地,移动,修饰等......)
您可以使用MotionEvent.getX(int)
(和y等效值)检索事件的坐标。 (阅读MotionEvent
documentation以了解有关指针的更多信息)。
当您拥有触摸事件的X和Y坐标时,您可以使用Bitmap.getPixel(int, int)
获取位图中指向像素的像素颜色(请参阅here以获取Bitmap
到你的ImageView
)。
瞧,你有选择的颜色。只需将其打印到图像视图下方的矩形视图中,然后使用Color实用程序类提取所选颜色的ARVB组件。
希望这有帮助。