如何在Android和Linux上将JPG文件解码为相同的位图?
CentOS Linux 6和Android的JPEG编解码器将相同的JPEG文件解码为不同的位图,这让我感到惊讶 当我在C/C++CentOS Linux应用程序中使用如何在Android和Linux上将JPG文件解码为相同的位图?,android,c++,linux,bitmap,Android,C++,Linux,Bitmap,CentOS Linux 6和Android的JPEG编解码器将相同的JPEG文件解码为不同的位图,这让我感到惊讶 当我在C/C++CentOS Linux应用程序中使用libjpeg和在Android one中使用BitmapFactory时,一些(许多)像素的红色、绿色或蓝色值不同,或者所有像素的值都不同。差异通常为1或2,因此用眼睛观察差异是复杂的或不可能的,但是,如果以后生成某种位图哈希来标识此位图,Linux和Android的哈希值将不同 我的问题是:有没有办法设置libjpeg,使其
libjpeg
和在Android one中使用BitmapFactory
时,一些(许多)像素的红色、绿色或蓝色值不同,或者所有像素的值都不同。差异通常为1或2,因此用眼睛观察差异是复杂的或不可能的,但是,如果以后生成某种位图哈希来标识此位图,Linux和Android的哈希值将不同
我的问题是:有没有办法设置libjpeg
,使其将JPEG文件解码为与安卓相同的位图?答案是:没有
你可能没有意识到,但这实际上是一个哲学问题,而不是一个计算机问题
你有任何理由相信所有Android平台上的所有Android系统都将JPEG解码为相同的位图吗
或者,即使他们这样做了,他们也会继续使用编解码器更新或新的Android版本,甚至是所有JPEG
没有理由相信您今天找到的任何解决方案仍然是明天的解决方案,或者将适用于所有位图
原因是您无法控制Android编解码器
我建议你重新考虑你需要这样做的理由
否则,您可能会尝试使用相同CPU架构的Android编解码器,并在centos系统上进行尝试,甚至在centos系统的容器中运行Android系统;但正如我所警告的,您不能指望它解决您的问题。甚至可能涉及不同的处理器,而不仅仅是不同的lib(平台)版本。最好是做一个相似性测试:缩小图像的比例,四舍五入到最接近的4倍左右。尤其是在Android上,你不想做太多的工作。