【问题标题】:Create CImg<uint8_t> from byte array?从字节数组创建 CImg<uint8_t>?
【发布时间】:2011-12-07 04:38:32
【问题描述】:

我正在尝试修改具有从图像文件创建 CImg 实例的函数的 C++ 库,以改用字节数组。这可能吗?我找到了一种似乎允许它的方法...

CImg  ( const t *const  values,  
  const unsigned int  size_x,  
  const unsigned int  size_y = 1,  
  const unsigned int  size_z = 1,  
  const unsigned int  size_c = 1,  
  const bool  is_shared = false  
) 

...但是由于我只有字节数组,所以我没有源图像的尺寸。

已更新以解决评论 这是对 pHash 库进行修改的尝试,该库使用此处定义的 CImg 类http://cimg.sourceforge.net/reference/structcimg__library_1_1CImg.html

通过对源图像的 http 请求填充字节数组。

【问题讨论】:

  • 我们应该怎么知道?我们不知道CImg 是什么,或者尺寸应该是什么,或者您正在使用什么库。
  • 您的问题中的信息不足,无法让任何人提供正确答案。假设您使用的是this API,您必须知道尺寸。您是如何创建和填充字节数组的?
  • @Random:考虑到你得到了图像的尺寸并且你有一个 2D 图像矩阵,请问你是如何设法从文件中创建一个 CImg 实例的?
  • 我知道这是一个老问题,但您谈到了修补 pHash,您是否设法做我认为允许从内存中加载图片的事情?我正在尝试做同样的事情,但 CImg 并没有真正帮助......
  • 不,我什么也做不了。我只需要将字节数组写入一个临时文件,然后从那里使用它。

标签: c++ cimg phash


【解决方案1】:

如果您的字节数组包含整个图像文件的副本(不仅仅是位图部分),那么您可以从标题中读取尺寸。

BITMAPFILEHEADERBITMAPINFOHEADER(当然,对于其他格式,如PNG或JPEG,您需要相应的标题)。

例如,这将允许您查看来自网络或应用程序资源段的图像,而无需先将其写入磁盘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 2015-11-19
    • 2013-09-23
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多