将(文本文件)转换为任何格式的图像(png)C ++

时间:2011-05-10 00:02:27

标签: c++ png robots.txt

有些人可以提供一个C ++代码,用于将文本文件转换为任何格式的图像,我知道图像没有任何意义,但我出于安全原因这样做

有人可以提供一个C ++代码,如果没有C ++,那么JAVA会工作

我真的在网上查了很多,发现什么都没有

我知道每个人都会说你的工作是独自一人,但我真的没时间了 拜托,这很严肃 如果有人愿意这样做,我甚至愿意付钱

提前

thanx

2 个答案:

答案 0 :(得分:1)

我不知道,您想要转换的是什么,但您可以将文本文件中的文本视为无符号字符数组,并将此数据作为RGB数组存储到BMP或其他无损压缩图像格式中。对于加载和保存图像,有很多库(OpenIL / DevIL非常简单和有用)。

这样,图像没有任何意义,但仍然是有效的图像,与仅更改文件扩展名相反。

编辑:你的运气我现在很无聊。以下可以使用OpenIL:

#include <fstream>
#include <cmath>
#include <IL/il.h>

void encode(const char *infile, const char *outfile)
{
    std::ifstream in(infile);
    in.seekg(0, std::ios_base::end);
    unsigned int size = in.tellg();
    unsigned int width = (size+6) / 3;
    width = int(sqrt(double(width))) + 1;
    char *data = new char[width*width*3];
    *(unsigned int*)data = size;
    in.seekg(0);
    in.read(data+sizeof(unsigned int), size);
    unsigned int image;
    ilGenImages(1, &image);
    ilBindImage(image);
    ilTexImage(width, width, 1, 3, IL_RGB, IL_UNSIGNED_BYTE, data);
    ilSaveImage(outfile);
    ilDeleteImages(1, &image);
    delete[] data;
}

void decode(const char *infile, const char *outfile)
{
    unsigned int image;
    ilGenImages(1, &image);
    ilBindImage(image);
    ilLoadImage(infile);
    ilConvertImage(IL_RGB, IL_UNSIGNED_BYTE);
    unsigned char *data = ilGetData();
    unsigned int size = *(unsigned int*)data;
    std::ofstream out(outfile);
    out.write((char*)data+sizeof(unsigned int), size);
    ilDeleteImages(1, &image);
}

int main(int argc, char *argv[])
{
    ilInit();
    ilOriginFunc(IL_ORIGIN_LOWER_LEFT);
    ilEnable(IL_ORIGIN_SET);
    ilEnable(IL_FILE_OVERWRITE);
    encode(argv[1], argv[2]);
    decode(argv[2], argv[3]);
    return 0;
}

编辑:添加了测试程序的完整源代码。在我的Windows系统上测试它,使用此代码作为输入和PNG格式,它可以正常工作。

答案 1 :(得分:0)

只需将文件扩展名更改为.png或任何您想要的内容即可。操作系统不了解文件中的内容及其含义;只有打开它时使用的程序。

如果您需要安全保障,我建议您在encryption.

上阅读一下