使CS50的“调整大小”(不太舒适)适应“调整大小”(更舒适)?

时间:2019-10-11 02:25:29

标签: c image-resizing cs50 bmp

我一直在阅读有关同一问题的几篇文章,但是大多数人似乎比我更容易地解决了这个更简单的问题,所以我很难找到有关如何进行的技巧。

在没有发布我的代码的情况下(不确定我们是否可以在此处执行此操作),主要调整大小部分的伪代码有点像这样:

for each scanline
{
    for number of times to extend vertically
    {
        for each pixel in infile
        {
            read pixel from infile

            for number of times to extend horizontally
            {
                write pixel
            }
        }
        done extending horizontally, add padding to outfile
        move cursor to front of line
    }
    done extending vertically, move to next line by passing padding
}

也许我的嵌套循环并没有那么快或优美,但这是我想到的第一个逻辑火车,它解决了。尽管如此,我不确定如何使它适应浮点数,以及我现在需要缩小内容的事实。

我知道我将需要进行一些舍入。如果我只有一个像素,并且用户告诉程序将其大小调整为.5,我仍然会给他们一个像素,因为我无法拆解组成它的字节。同样,每次升级时,大概都会给出完整的像素。

但是我从哪里开始呢?如何确定“标度”是什么,以及它如何与循环交互?我不能循环1.5次,所以我想在进入循环之前我必须先知道四舍五入的比例。我什至无法开始考虑以这种方式缩小某些内容……我可能必须跳过循环中的某些像素才能做到这一点?似乎是一种完全不同的机制,可能会弄乱生成的图像。

无论如何,我们将不胜感激!

0 个答案:

没有答案