Android中一圆环图片,圆环上某一圈坐标点算出来,获取图片上的像素值,报错 200

java.lang.IllegalArgumentException:xmustbe<bitmap.width()atandroid.graphics.Bitmap.ch... java.lang.IllegalArgumentException: x must be < bitmap.width()
at android.graphics.Bitmap.checkPixelAccess(Bitmap.java:1356)
at android.graphics.Bitmap.getPixel(Bitmap.java:1308)
at com.drkon.sh.innolumi.activity.ColorActivity$1.handleMessage(ColorActivity.java:97)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5631)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)

圆环上坐标点是根据屏幕左边界算起,还是居中后算?

x = relativeLayout.getWidth();
y = relativeLayout.getHeight();
//图片宽高
imgX = mAnnulusView.getWidth();
imgY = mAnnulusView.getHeight();
//布局中心点坐标
xCenter = x / 2;
yCenter = y / 2;
//圆环上一圈的坐标x . y轴坐标点
Xaxis = (int) (Math.round((imgX / 2 - 5) * Math.cos(Math.toRadians(360 / 255))) + x / 2);
Yaxis = (int) (Math.round((imgX / 2 - 5) * Math.sin(Math.toRadians(360 / 255))) + y / 2);

Bitmap a = ((BitmapDrawable) mAnnulusView.getDrawable()).getBitmap();

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_colors);

int p = a.getPixel(Xaxis, Yaxis);

int pixel = bitmap.getPixel(Xaxis, Yaxis);

坐标点到底相对什么去算的
算圆环某一圈的颜色,我坐标根据图片还是布局去定?布局该怎么定义呢?
展开
 我来答
育知同创教育
2017-03-29 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
public void getPixColor(int imhg){
Bitmap src = BitmapFactory.decodeResource(getResources(),imhg);
int A, R, G, B;
int pixelColor;
int height = src.getHeight();
int width = src.getWidth();

for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
pixelColor = src.getPixel(x, y);
A = Color.alpha(pixelColor);
R = Color.red(pixelColor);
G = Color.green(pixelColor);
B = Color.blue(pixelColor);
if (R>0||G>0||B>0){
tv_tilte2.setTextColor(Color.rgb(R,G, B));
}

}
}

}
更多追问追答
追问
不要在网上粘贴复制,看清楚我的问题,谢谢
追答
上面 取出  所有的颜色啊 放在一个集合中  然后  去除  无用的白色  最后  就可以了
坐标点是相当于图片取算的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式