可升级的PPM图像(无过滤)

时间:2016-05-16 11:30:01

标签: c++ winforms command-line-interface

我遇到的问题是我的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();

}

Result

1 个答案:

答案 0 :(得分:0)

显然我的问题出现在for循环中。这是更正的代码,增加了颜色兼容性。

.m2/