【问题标题】:C++ Converting image to integer arrayC ++将图像转换为整数数组
【发布时间】:2010-04-17 19:51:26
【问题描述】:

如何将图像(.png 文件)中的像素转换为整数数组,其中每个像素都转换为其等效的 ARGB 整数?顺便说一下,不是二维整数数组,而是一维数组(通过数组[row*width+col]访问)。

谢谢。

【问题讨论】:

  • 如果你真的想在没有第三方库的情况下做到这一点,你会想成为 PNG 规范的好朋友:w3.org/TR/PNG。看完(及相关资料),这只是编程的小事。
  • 我劝你不要靠近精神病院,否则会被卡住。
  • @jweyrich,你是什么意思? @James,谢谢,我去看看。
  • @jonathanasdf 我只是在开玩笑。不使用 libpng 或其他库来解压缩图像是疯狂的。例如,libpng 会给你一个缓冲区[width * height * channels]。
  • 如果你想尝试基本的图像处理,你可以尝试使用 PBM 格式——它本质上是以一种非常简单的方式写出的原始未压缩像素数据,带有一些标题数据,所以它是微不足道的从代码中自己读/写图像。查找 IrfanView 作为该格式的图像查看器(以及阳光下的所有其他内容!)。 netpbm.sourceforge.net/doc/pbm.html

标签: c++ image argb pixel-manipulation


【解决方案1】:

一旦您将图像数据读取到某个缓冲区,普通的演员就应该做到这一点:

GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file ("image.png", NULL);
unsigned char *pixels = gdk_pixbuf_get_pixels (pixbuf);
int *array = reinterpret_cast<int*>(pixels);

示例使用 GdkPixbuf 库,但其他库应该类似。

【讨论】:

    【解决方案2】:

    除非您是出于兴趣和学习,否则我建议您使用第三方库,例如 ImageMagick
    这将节省您的时间(并避免错误)

    【讨论】:

    • 时间过去了,现在它存在多个用于 ImageMagick 的 API。 C++ 是Magick++
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2016-12-23
    相关资源
    最近更新 更多