【问题标题】:How to change RGB values in c++ [closed]如何在 C++ 中更改 RGB 值 [关闭]
【发布时间】:2015-02-07 23:41:40
【问题描述】:

对于这个可能被认为是“新手”的问题,我深表歉意,但我刚刚开始学习如何使用 c++。我知道如何读写文本文件,但是如果我想打开一个图像文件,它和打开一个普通的文本文件是一样的,还是不同?我相信这是不同的,因为当我将文件拖到 CodeBlocks 以检查它时,它只使用数字。例如,第 4 行是 13 33 66,第 19 行是 15 28 80。

#include <iostream>
#include <fstream>

using namespace std;

int main()
{

    ifstream file_reader("file_name_example.ppm", ios::binary | ios::out);

    if (! file_reader.is_open())
    {
        cout << "The file cannot open." << endl;
    }


return 0;

我只想更改图像的蓝色值,所以我知道我需要执行一个 for 循环来执行每三个值 (R G B)。我的问题是我该怎么做?打开文件后,如何将每三个数字替换为另一个值?

我非常感谢任何帮助。谢谢!

【问题讨论】:

  • 你的 "code sample" 太荒谬了,与 "the question" 相关(实际上不存在)。
  • 我已将此标记为“不清楚您在问什么”,因为您基本上是在试图通过包含与您的努力无关的琐碎代码 sn-p 来愚弄他人并避免适得其反问题。
  • 您知道用于 PPM 文件的 netpbm format 吗?

标签: c++ image ppm


【解决方案1】:

我觉得这个问题的潜力被忽略了,因为代码的不相关的 sn-p 和误导性的打开和阅读文本文件部分。

您可以在 windows.h(MFC) 中用 HBITMAP 替换位图中的更改和替换 RGB 值

解决方案:

HBITMAP hBmp;
CCloneBitmap bmpClone;
HICON hIcon;
hBmp=LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(ID_LIGHTCAR));
if(hBmp!=NULL)
{
  bmpClone.Clone(hBmp);
  DeleteObject(hBmp);
  bmpClone.ChangeColor(IRGB(0,0,0), IRGB(255,0,0));
  // change BLACK pixels to RED ones. 
  //Change the IRGB values to whatever you would like - blue - IRGB(0,0,255) 
}

【讨论】:

  • 我注意到他的图像是 ppm 并且这个答案是针对 bmp 但你可以将 ppm 转换为 bmp 文件
【解决方案2】:

http://en.wikipedia.org/wiki/JPEG 查找文件格式以及它们如何以二进制形式存储。它与其他文件不同。

【讨论】:

  • 您仍然无法更改文件格式...
猜你喜欢
  • 2010-12-07
  • 1970-01-01
  • 2013-04-06
  • 1970-01-01
  • 2014-08-23
  • 2014-07-16
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多