在我的项目,我想pick image from gallery
然后用户可以点击该图像ImageView的像素和pixel color store into my db.
如何让机器人
问题:
它会给我的异常:y must be <bitmap.height()
Logcat:
07-22 16:38:59.406: E/AndroidRuntime(6139): java.lang.IllegalArgumentException: y must be < bitmap.height()
07-22 16:38:59.406: E/AndroidRuntime(6139): at android.graphics.Bitmap.checkPixelAccess(Bitmap.java:788)
07-22 16:38:59.406: E/AndroidRuntime(6139): at android.graphics.Bitmap.getPixel(Bitmap.java:740)
07-22 16:38:59.406: E/AndroidRuntime(6139): at com.example.mycolorreader.PhotoActivity$2.onTouch(PhotoActivity.java:121)
07-22 16:38:59.406: E/AndroidRuntime(6139): at android.view.View.dispatchTouchEvent(View.java:3762)
07-22 16:38:59.406: E/AndroidRuntime(6139): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
07-22 16:38:59.406: E/AndroidRuntime(6139): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
07-22 16:38:59.406: E/AndroidRuntime(6139): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
07-22 16:38:59.406: E/AndroidRuntime(6139): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
07-22 16:38:59.406: E/AndroidRuntime(6139): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
代码:
final Bitmap bitmap = ((BitmapDrawable) ivPhoto.getDrawable()).getBitmap();
ivPhoto.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
int pixel = bitmap.getPixel(x, y);
我尝试像集填充更多的东西,设置图像布局动态的,但总能得到这个例外。
我搜索很多关于堆栈溢出和谷歌,但没有得到正面回应。
请给我一些想法。
x/y是屏幕坐标。您应该将屏幕坐标转换为位图本地坐标,然后调用getPixel。 – Leonidos
@Leonidos如何将屏幕坐标转换为位图。 – Harshid
@Leonidos我也试试这个链接。 http://stackoverflow.com/questions/12674941/how-to-get-coordinates-on-touch-event-on-bitmap-not-of-screen – Harshid