【问题标题】:C++ Importing and Renaming/Resaving an ImageC++ 导入和重命名/重新保存图像
【发布时间】:2011-03-09 10:24:40
【问题描述】:

大家好, 我目前正在升读大二(CS 专业),今年夏天,我正在尝试自学 C++(我的学校代码主要使用 Java)。 我已经阅读了许多关于 C++ 的指南,并了解了 ofstream、保存和编辑 .txt 文件的部分。 现在,我有兴趣简单地导入图像(jpeg、位图,不是很重要)并重命名上述图像。 我用谷歌搜索,四处询问,但无济于事。 如果不下载外部库(我 dled CImg),这个过程是否可行? 任何有关如何加快我的目标的提示或提示将不胜感激

【问题讨论】:

  • 为此使用库。根据文件规范编写 jpeg 阅读器绝非易事。如果你可以使用任何格式,那么 TGA 就很简单了。

标签: c++ image import rename


【解决方案1】:

没有库也有可能——您只需要图像规格和“C”,问题是为什么?

Targa 或 bmp 可能是最简单的,它只是一个标题和作为值的二进制块的图像数据。
Gif、jpeg 和 png 更复杂——数据被压缩了

【讨论】:

    【解决方案2】:

    重命名图像通常与重命名任何其他文件大致相同。

    如果您想做更多的事情,您还可以更改IPTC metadata 的标题字段中的数据。这确实不需要需要 JPEG 解码或类似的东西 - 您需要充分了解文件格式才能找到 IPTC 元数据,并充分研究 IPTC 格式才能找到 Title 字段,但仅此而已。您访问 IPTC 元数据的具体方式会有所不同——导航 TIFF(例如)需要大量代码。

    【讨论】:

      【解决方案3】:

      当您说“重命名上述图像”时,您是指更改图像文件中的元数据,还是只是更改文件名?如果您指的是元数据,那么您需要了解文件格式或使用了解文件格式的库。每种类型的图像文件都会有所不同。如果您基本上只是想复制文件,则可以将内容从一个文件流流式传输到另一个文件流,或使用文件系统 API。

      std::ifstream infs("input.txt", std::ios::binary);
      std::ofstream outfs("output.txt", std::ios::binary);
      outfs << insfs.rdbuf();
      

      文件系统 API 的一个示例是 Win32 上的 CopyFile。

      【讨论】:

        猜你喜欢
        • 2019-03-19
        • 1970-01-01
        • 1970-01-01
        • 2016-09-25
        • 2019-04-14
        • 2016-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多