c++如何用已知的数据创建PNG文件
C++ how to create a PNG file with known data?
只是想知道,如果我将PNG文件读取为二进制文件,并且我知道如何将十六进制数字写入另一个纯文本或任何文件,那么我如何使用这些十六进制数字重新创建PNG文件?
这是我用来从PNG文件中读取并写入另一个纯文本文件的代码:
unsigned char x;
ifile.open("foo.png",ios::binary);
ifile>>noskipws>>hex;
while(ifile>>x){
ofile<<setw(2)<<setfill('0')<<(int)x;
//do some formatting stuff to the ofile, ofile declaration omitted
//some ifs to see if IEND is read in, which is definitely correct
//if IEND, break, so the last four hex numbers in ofile are 49 45 4E 44
}
//read another 4 bytes and write to ofile, which are AE 42 60 82, the check sum
我这样做的原因是因为我有一些PNG文件在IEND块之后有一些不相关的消息,我想摆脱它们,只保留与实际图片相关的块,并将它们分割成不同的文件。所谓"无关信息",我的意思是它们不是图片的实际组成部分,但我对它们有其他用途。
这很容易,你只需要读取每2个字符并将它们从十六进制转换回二进制。
unsigned char x;
char buf[3] = {0};
ifile.open("foo.hex");
while(ifile>>buf[0]>>buf[1]){
char *end;
x = (unsigned char) strtol(buf, &end, 16);
if (*end == 0) // no conversion error
// output the byte
相关文章:
- 从 bmp 文件数据创建 MFC CBitmap
- 如何在 QML 中使用从 c++ 公开的序列数据创建图表
- c++用输入数据创建数组
- 使用 2D 数据创建 3D 直方图(OpenCV?
- 如何使C++代码更快:使用 CFile 从相机数据创建.csv文件
- 使用 C++ 从 16 位数据创建灰度图像
- 如何根据过滤的数据创建笛卡尔产品范围
- C 双重调度,出厂模式或一种从接收到的序列数据创建派生对象的方法
- 为 ppm/pgm 图像数据创建存储
- 如何从二进制数据创建 QIcon
- 基于输入数据创建 STL 向量 - 标量或复杂类型
- DirectX11如何从未签名的char*数据创建Texture2D
- 使用相机的初始数据创建d3d11Texture2D
- OpenCV C++:从存储在 int 向量的索引中为垫子类型数据创建列范围
- 如何使用矢量中的数据创建矢量
- 从单独文件(C++)中的用户输入数据创建矢量
- 为二进制数据创建字符串缓冲区的最佳方法
- 使用Media Foundation从原始数据创建AAC文件
- 在Visual Studio 2013中使用c++中的对象字段数据创建图表
- 如何从变量数据创建std::initializer_list