是否可以操纵图像的像素(例如创建棕褐色,灰度,调整大小等)来制作二进制代码?
假设我们用
打开图像bool readFile(string filename) {
ifstream f(filename, ios::binary | ios:: in );
ostringstream ob;
int offset = 0;
char c;
if (f.fail()) {
return false;
}
while (f.get(c)) {
if (offset % 16 == 0)
cout << hex << setw(8) << setfill('0') << offset << "adress ";
cout << ' ' << hex << setw(2) << (int)(unsigned char) c;
offset++;
}
return true;
}
int main() {
if (!readFile("boss.png")) {
cout << "Cant read" << endl;
}
return 0;
}
我们可以使用其二进制表示来访问图像像素吗?如果是这样,怎么样?我找不到合适的资源。
答案 0 :(得分:0)
PNG is a well documented file format因此,从理论上讲,您可以直接操作图像数据。但是,这很不寻常。通常,您可以将其转换为未压缩格式,对其进行操作,然后将其重新压缩为PNG,因为读取/写入未压缩的图像数据要简单得多(除非您只读取/写入几个像素,否则可能会更多快)。
搜索提供了很多关于如何读取/写入PNG文件的示例,例如here。