我遇到的问题是我的PPM图像太小了,当我想在窗口中显示它时(没有scalling,缩放可用,我必须将图像保存在磁盘上),我只是使用了容易放大像素的功能(或者更确切地说将其写入文件中)。但在此之后,图像变得非常混乱(如屏幕截图所示)并且分辨率错误。在过去的4个小时里我尝试过很多东西,但没有什么能奏效的。 有没有解决方案,或者我只是遗漏了一些明显的东西或者做了很多错误的事情? 我在C ++ cli Windows Forms(VS)中使用PictureBox,但在图像查看器中显示相同的内容(WinExplorer,IrfanView)。
下面是主代码,尺寸是尺寸(图像是正方形),颜色只是表示它是否要成为颜色,像素化是放大像素。 我也提供完整的git代码Here
int sizemult = size;
if (color)
sizemult *= 3; //3 values of RGB
std::fstream file;
file.open("temp.ppm", std::ios::trunc | std::ios::out);
if (color)
file << "P3" << std::endl;
else
file << "P2" << std::endl;
file << size*pixelsize << " " << size*pixelsize << std::endl;
file << 256 << std::endl;
for (auto i = 0; i < size; i++) {
for (auto h = 0; h < pixelsize; h++) {
for (auto k = 0; k < size*sizemult; k++) {
for (auto j = 0; j < pixelsize; j++) {
file << table[i*size+k] << " ";
}
}
file << std::endl;
}
}
file.close();
}
答案 0 :(得分:0)
显然我的问题出现在for循环中。这是更正的代码,增加了颜色兼容性。
.m2/