【发布时间】:2012-09-13 20:27:10
【问题描述】:
这是我的问题。我打开了一个 .jpg 图像并将其每个字节写入一个用逗号分隔的 .txt 文件中。这是成功的。现在我想使用那个 txt 文件来重建图像。 img.txt 看起来像 255,216,255,224,0,16,74,70,73,70,0,1,1....... 以下代码创建了 image.jpg,其大小为原始图像,但该图像不可见。我期待某人的帮助...
#include<iostream>
#include<string>
#include<fstream>
#include<sstream>
#include<cstdlib>
using namespace std;
int main(){
char *s;
long x;
ifstream is("D:\\test\\img.txt");
is.seekg(0,ios::end);
x=is.tellg();
is.seekg(0,ios::beg);
s=new char[x];
is.read(s,x);
is.close();
stringstream str;
char a[4];
int y = 0;
for(int i=0; i<=x; i++) {
if (s[i] != ',') {
a[y] = s[i];
y = y + 1;
}
if (s[i] == ',') {
str << (unsigned char)atoi(a);
a[0] = '\0';
a[1] = '\0';
a[2] = '\0';
a[3] = '\0';
y = 0;
}
}
const char *ss=(str.str()).c_str();
ofstream ex("D:\\test\\test.txt");
ex << ss;
ofstream fileo("D:\\test\\image.jpg",ios::binary);
fileo.write(ss,(str.str()).length());
}
【问题讨论】:
-
jpg 相当复杂,但这是我在互联网上找到的 docs.oracle.com/javase/6/docs/api/javax/imageio/metadata/…
-
创建的txt文件包含图像的所有数据字节。所以写回它们必须重新构建图像。或任何重建它的想法。
-
jpeg 文件携带的信息不仅仅是一个简单的逐像素数组。
-
txt 文件就是这样创建的。 link
-
那么正确的方法是什么@Chad