Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android和Linux上将JPG文件解码为相同的位图?_Android_C++_Linux_Bitmap - Fatal编程技术网

如何在Android和Linux上将JPG文件解码为相同的位图?

如何在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,使其

CentOS Linux 6和Android的JPEG编解码器将相同的JPEG文件解码为不同的位图,这让我感到惊讶

当我在C/C++CentOS Linux应用程序中使用
libjpeg
和在Android one中使用
BitmapFactory
时,一些(许多)像素的红色、绿色或蓝色值不同,或者所有像素的值都不同。差异通常为1或2,因此用眼睛观察差异是复杂的或不可能的,但是,如果以后生成某种位图哈希来标识此位图,Linux和Android的哈希值将不同

我的问题是:有没有办法设置
libjpeg
,使其将JPEG文件解码为与安卓相同的位图?

答案是:没有

你可能没有意识到,但这实际上是一个哲学问题,而不是一个计算机问题

你有任何理由相信所有Android平台上的所有Android系统都将JPEG解码为相同的位图吗

或者,即使他们这样做了,他们也会继续使用编解码器更新或新的Android版本,甚至是所有JPEG

没有理由相信您今天找到的任何解决方案仍然是明天的解决方案,或者将适用于所有位图

原因是您无法控制Android编解码器

我建议你重新考虑你需要这样做的理由


否则,您可能会尝试使用相同CPU架构的Android编解码器,并在centos系统上进行尝试,甚至在centos系统的容器中运行Android系统;但正如我所警告的,您不能指望它解决您的问题。

甚至可能涉及不同的处理器,而不仅仅是不同的lib(平台)版本。最好是做一个相似性测试:缩小图像的比例,四舍五入到最接近的4倍左右。尤其是在Android上,你不想做太多的工作。