有些人可以提供一个C ++代码,用于将文本文件转换为任何格式的图像,我知道图像没有任何意义,但我出于安全原因这样做
有人可以提供一个C ++代码,如果没有C ++,那么JAVA会工作
我真的在网上查了很多,发现什么都没有
我知道每个人都会说你的工作是独自一人,但我真的没时间了 拜托,这很严肃 如果有人愿意这样做,我甚至愿意付钱
提前thanx
答案 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.
上阅读一下