两台Android手机 同一套代码 视效果一致的两张Bitmap 进行getPixel(i, j)得到的结果不一致 这是为什么
- 业务流是将手机上的绘制的布局转为Bitmap获取像素颜色 有色标记位1无色标记为0 然后生成二进制 投送给水墨屏进行绘制显示。
过程:
1、将Android布局xml文件的View生成Bitmap
2、将Bitmap压缩为指定尺寸(这个时候将Bitmap显示到页面的时候视觉效果是正常的)
3、将Bitmap进行getPixel(x,y)
4、这时候同一台设备打印出的结果每次都不一致
但是我的HUAWEIMate30Pro取到的结果一直是正常的
private fun getImagePixel(
bitmap: Bitmap,
isRed: Boolean
): String {
println("---------start-----------")
val rgb = IntArray(3)
//输出到指定文件
try {
val stringBuffer = StringBuffer()
val testB = StringBuffer()
// +多少自己取值 值越小表示取的每一个像素越小
var byteNumber = 0
for (j in 0 until bitmap.height) {
for (i in 0 until bitmap.width) {
byteNumber++
// 转16进制
val pixel = bitmap.getPixel(i, j)
testB.append(pixel)
rgb[0] = pixel and 0xff0000 shr 16
rgb[1] = pixel and 0xff00 shr 8
rgb[2] = pixel and 0xff
if (isRed) {
if (rgb[0]==255&&rgb[1]==0&&rgb[2]==0) {
stringBuffer.append("1")
} else {
stringBuffer.append("0")
}
} else {
if (rgb[0]==255&&rgb[1]==255&&rgb[2]==255) {
stringBuffer.append("1")
} else {
stringBuffer.append("0")
}
}
}
}
println("------------end----------字节数:$byteNumber")
println("------------end----------字节数:$testB")
return stringBuffer.toString()
} catch (e: Exception) {
e.printStackTrace()
}
return ""
}
这个时候的testB里面的内容就会错位
现在怀疑跟像素分辨率有关 但是我不知道怎么调整,有了解这方面问题原因的嘛 望指教
正常:
不正常情况: