【问题标题】:Copy an image bit by bit C++逐位复制图像 C++
【发布时间】:2020-12-05 06:56:03
【问题描述】:

我最近发现了一些关于 C++ 文件打开模式的文档,并使用 ios_base::binary 尝试打开图像 (.JPG),逐个读取位,并将它们写入单独的文件 (ofstream)带有 .JPG 扩展名。问题是尝试打开新创建的图像时出现错误:Error interpreting JPEG file。有什么帮助吗?

代码:

int main()
{
    char a;
    std::ifstream fin {"image.jpg", std::ios_base::binary};
    std::ofstream fout {"uzicopied.jpg", std::ios_base::binary};
    while (true)
    {
        if (!(fin >> a) || !fin) break;
        fout << a;
    }
    return 0;
}

【问题讨论】:

    标签: c++ binary jpeg fileinputstream fileoutputstream


    【解决方案1】:

    fin &gt;&gt; a 会跳过空格,即使文件是以二进制模式打开的。请改用get。您还可以简化您的 while 循环。

    char a;
    while (fin.get(a))
        fout.put(a);   // fout << a; would also work
    

    【讨论】:

    • 哎呀。它现在有效,不知道为什么我没有想到这一点。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-05
    • 2012-03-14
    • 1970-01-01
    • 2015-10-30
    • 2014-07-07
    相关资源
    最近更新 更多