gpt4 book ai didi

rgb - 使用 libjpeg 将字节流转换为 RGB

转载 作者:行者123 更新时间:2023-12-05 00:43:38 28 4
gpt4 key购买 nike

我拦截了一个数据包并提取了有效载荷。此有效负载是压缩的 jpeg 字节流数据(例如,将此数据分配给 unsigned char *payload )。我知道如果我有一个 FILE 指针,那么我可以使用 libjpeg 库来提取图像信息。我的问题是有没有办法将我的指针( *payload )传递给 libjpeg 函数来获取 RGB 值和图像的尺寸?

谢谢你。

最佳答案

添加到 Tal's answer ,你应该做的是看看jpeg_stdio_src()的实现函数在 jdatasrc.c .该函数的目的是初始化数据源对象,即cinfo->src .所以,你应该做的是:

  • 创建一个结构(类似于 my_source_mgr 中的 jdatasrc.c 结构),它的第一个成员是 struct jpeg_source_mgr 的实例。 .添加您认为必要的任何其他成员。请注意,我们实际上是在进行手动继承——在 C++ 中,我们将定义一个派生自 jpeg_source_mgr 的类。 , 以及 jpeg_source_mgr 中声明的各种函数指针而是虚函数。但是,我们使用的是 C,所以我们必须以艰难的方式进行继承和多态。
  • 为您的结构实例分配空间,确保分配正确的字节数,并填写您的数据成员。
  • 实现以下五个功能:
  • void init_source(j_decompress_ptr)
  • boolean fill_input_buffer(j_decompress_ptr)
  • void skip_input_data(j_decompress_ptr, long)
  • boolean resync_to_start(j_decompress_ptr, int)
  • void term_source(j_decompress_ptr)

  • 请注意,对于内存缓冲区,这些函数可能非常简单。
  • 最后,初始化 jpeg_source_mgr 中的函数指针成员指向这些函数。

  • 有了这个,你就可以用它来代替 jpeg_stdio_src()初始化数据源管理器,然后就好像您正在从文件系统解码文件一样。

    关于rgb - 使用 libjpeg 将字节流转换为 RGB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/832864/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com