所以,我正在努力做一个家庭作业,要求我反照片别名。但这不是我的问题的重点。这些文件是.ppm ppm format。我读了它,使用fread
(它是颜色,所以我需要读取rgb)。fwrite()不写整个ppm文件
fread(tmp, 3 * sizeof(char), maxWidth * maxHeight, f)
其中
tmp = (char *)malloc(width * height * 3 * sizeof(char));
我铸TMP到短整型(我需要做对所得矩阵一些工作):
for(i=0; i < width * height; i++){
values[i] = (short int)tmp[i];
}
值被定义为短整型:
values = (short int*) malloc(width * height * sizeof(short int));
事情是,我只是想做一个测试。阅读图像,将其转换为int
,将其转换回char,写入图像。在这个阶段,只有1/4的图像被写入,我不知道为什么。我阅读fwrite
的文档,但我无法找出我做错了什么。转换图像(tmp2分配为img):
for(i=0; i < width * height; i++){
tmp2[i] = (char)values[i];
}
fwrite(tmp2, 3 * sizeof(char), width * height, g);
我是否正确使用fwrite?也许有人也在为此而努力,并知道如何回答。
你有使用C++的原因吗?我相信Java以更好的方式处理文件流。 – CrakC
@CrakC:这将是翻译整个程序或违反作业要求的一个相当差的理由。 –
@JoachimPileborg:自从'fread'和'fwrite'何时不能用于处理文本文件? –