android - 为什么我不能模拟远视?
问题描述
我想模拟远视色盲。
这是代码
@RequiresApi(Build.VERSION_CODES.O)
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == cameraRequest) {
val photo: Bitmap = data?.extras?.get("data") as Bitmap
val mutablePhoto = photo.copy(Bitmap.Config.ARGB_8888, true)
val imheight = mutablePhoto.height
val imwidth = mutablePhoto.width
val nprotanopia = arrayOf<Float>(0.567F, 0.433F,0F,0F,0F,0.558F,0.442F,0F,0F,0F,0F,0.242F,0.758F,0F,0F,0F,0F,0F,1F,0F,0F,0F,0F,0F,1F)
fun setN(n: Float): Float {
return if (n < 0) 0F else if (n < 255) n else 255F
}
for (y in 0 until imheight) {
for (x in 0 until imwidth) {
val i = mutablePhoto.getPixel(x, y)
Log.d("RI", i.toString())
val red: Float = Color.red(i).toFloat()
val blue: Float = Color.blue(i).toFloat()
val green: Float = Color.green(i).toFloat()
val alpha: Float = Color.alpha(i).toFloat()
val nR=((red*nprotanopia[0])+(green*nprotanopia[1])+(blue*nprotanopia[2])+(alpha*nprotanopia[3])+nprotanopia[4])
val nG=((red*nprotanopia[5])+(green*nprotanopia[6])+(blue*nprotanopia[7])+(alpha*nprotanopia[8])+nprotanopia[9])
val nB=((red*nprotanopia[10])+(green*nprotanopia[11])+(blue*nprotanopia[12])+(alpha*nprotanopia[13])+nprotanopia[14])
val nA=((red*nprotanopia[15])+(green*nprotanopia[16])+(blue*nprotanopia[17])+(alpha*nprotanopia[18])+nprotanopia[19])
val r: Float = setN(nR)
val g: Float = setN(nG)
val B: Float = setN(nB)
val A: Float = setN(nA)
Log.d("R", r.toString())
mutablePhoto.setPixel(x, y, Color.argb(A, r, g, B))
}
}
imageView.setImageBitmap(mutablePhoto)
}
}
我不知道出了什么问题。我从网络档案中得到了关于 protanopia的理论
解决方案
推荐阅读
- python - 使用请求登录网站时,如何找到有效负载所需的参数?
- git - 应该提交 .last_build_id 吗?
- javascript - 使用 2 个或更多休息响应来调用另一个休息服务并制作一个列表
- php - 返回空描述 simplexml_load_file() php
- authentication - SSO 应该包括授权还是仅包括身份验证?
- python - 将电子邮件地址和预定小时数作为输入并从字典中返回剩余小时数的函数
- c# - 创建按钮数组
- mininet - 如何在 mininet 中使用 setCPUFrac?
- python - 如何使用 Python 从 pandas DataFrame 进行网络绘图/分析
- asp.net-core - 如何在布局中使用一些局部视图?其他方法?