jpeg 字节到十六进制值
jpeg bytes to hex value
我正在通过 uvc 接收流,它为我提供了每个 mjpeg 流。
将jpeg帧写入位图时,从调试器查看的字节数组如下所示:
{ 0, -128, 1, -128, 0, -128, .......}
我是这样创建文件的:
bitmap.copyPixelsFromBuffer(frame);
File file = new File(Constants.CAPTURE_PATH, System.currentTimeMillis() + ".jpeg");
file.createNewFile();
out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
创建文件并使用十六进制查看器查看文件后,文件如下所示:
FF D8 FF E0 00.....
这是不是意味着{0}变成了FF,{-128}变成了D8?
是什么规则造成的?任何帮助将不胜感激。
您可能正在查看 JPEG 文件 header 如果这些是文件十六进制查看器看到的文件中最开始的字节。 FF D8 FF
看起来惊人地相似。参见 here for example and wikipedia page here。
我希望您在调试器中查看的数据是原始 image 数据,不包括 header.
经过我们在评论中的简短交谈,我觉得这就是您正在寻找的信息。
您实际看到的是文件header。 header 本质上是文件开头的一段代码,它告诉计算机它是什么,以便它知道如何处理它。
有关文件 header 的更多信息:https://www.webopedia.com/TERM/H/header.html
现在,针对您的具体问题。对于 jpeg(就像任何其他文件一样),它们有自己的 header 和数据组织方式。 JPEG header 以 FF D8
开头,对于 jpeg 文件 reader 表示 SOI(图像开始)。然后它转到 FF E0
,这意味着 APP0(应用程序段)。清单还在继续。
关于 jpeg 文件的更多信息:https://web.archive.org/web/20120403212223/http://class.ee.iastate.edu/ee528/Reading%20material/JPEG_File_Format.pdf
您需要做的是跳过 header 并开始寻找您的 "actual" 数据。 jpeg 文件 headers 有点棘手的部分是它们的大小不尽相同,因此如果我没记错的话,您需要寻找 SOS(扫描开始)标记并从那里开始。
我正在通过 uvc 接收流,它为我提供了每个 mjpeg 流。
将jpeg帧写入位图时,从调试器查看的字节数组如下所示:
{ 0, -128, 1, -128, 0, -128, .......}
我是这样创建文件的:
bitmap.copyPixelsFromBuffer(frame);
File file = new File(Constants.CAPTURE_PATH, System.currentTimeMillis() + ".jpeg");
file.createNewFile();
out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
创建文件并使用十六进制查看器查看文件后,文件如下所示:
FF D8 FF E0 00.....
这是不是意味着{0}变成了FF,{-128}变成了D8?
是什么规则造成的?任何帮助将不胜感激。
您可能正在查看 JPEG 文件 header 如果这些是文件十六进制查看器看到的文件中最开始的字节。 FF D8 FF
看起来惊人地相似。参见 here for example and wikipedia page here。
我希望您在调试器中查看的数据是原始 image 数据,不包括 header.
经过我们在评论中的简短交谈,我觉得这就是您正在寻找的信息。
您实际看到的是文件header。 header 本质上是文件开头的一段代码,它告诉计算机它是什么,以便它知道如何处理它。
有关文件 header 的更多信息:https://www.webopedia.com/TERM/H/header.html
现在,针对您的具体问题。对于 jpeg(就像任何其他文件一样),它们有自己的 header 和数据组织方式。 JPEG header 以 FF D8
开头,对于 jpeg 文件 reader 表示 SOI(图像开始)。然后它转到 FF E0
,这意味着 APP0(应用程序段)。清单还在继续。
关于 jpeg 文件的更多信息:https://web.archive.org/web/20120403212223/http://class.ee.iastate.edu/ee528/Reading%20material/JPEG_File_Format.pdf
您需要做的是跳过 header 并开始寻找您的 "actual" 数据。 jpeg 文件 headers 有点棘手的部分是它们的大小不尽相同,因此如果我没记错的话,您需要寻找 SOS(扫描开始)标记并从那里开始。