问题描述
Android6.0和7.0 加载一张jpg图片,转换为bitmap, 然后将其保存到本地,用UE比较两张本地图片的2进制,得到的结果不一致。
问题出现的环境背景及自己尝试过哪些方法
(1)利用系统的bitmapFactory 结果也是一样,不一致,
(2)Glide也不行
(3)有个奇怪的现象,4.4、5.0、6.0、8.1 是一样的, 7.0、7.1、8.0结果一致。
相关代码
Picasso.get()
.load(R.drawable.web_z)
.config(Bitmap.Config.ARGB_8888)
.resize(500,400)
.transform(object : Transformation {
override fun key(): String = "test"
override fun transform(source: Bitmap): Bitmap {
FileUtilTest.save(source, "picasso")
return source
}
}).into(mImageView)
//将bitmap保存到本地
object FileUtilTest {
fun save(bitmap: Bitmap, flag: String) {
if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED)
// 判断是否可以对SDcard进行操作
{ // 获取SDCard指定目录下
val sdCardDir = Environment.getExternalStorageDirectory().toString() + "/CoolImage/"
val dirFile = File(sdCardDir) //目录转化成文件夹
if (!dirFile.exists()) { //如果不存在,那就建立这个文件夹
dirFile.mkdirs()
} //文件夹有啦,就可以保存图片啦
val file = File(sdCardDir, flag + "_" + System.currentTimeMillis() + ".png")// 在SDcard的目录下创建图片文,以当前时间为其命名
var out: FileOutputStream? = null
try {
out = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.PNG, 90, out)
out.flush()
Log.d("TAG", "_________保存到____sd______指定目录文件夹下____________________")
} catch (e: Exception) {
e.printStackTrace()
} finally {
if (out != null) {
try {
out.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
Log.d("TAG", "保存已经至" + Environment.getExternalStorageDirectory() + "/CoolImage/" + "目录文件夹下")
}
}
}
这种问题,该如何解决?