Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调整CS50';s调整大小(不太舒适)以调整大小(更舒适)?_C_Image Resizing_Cs50_Bmp - Fatal编程技术网

调整CS50';s调整大小(不太舒适)以调整大小(更舒适)?

调整CS50';s调整大小(不太舒适)以调整大小(更舒适)?,c,image-resizing,cs50,bmp,C,Image Resizing,Cs50,Bmp,我读了几篇关于同一个问题的帖子,但大多数帖子对这个更容易的问题的处理方式似乎与我不同,因此我很难找到关于如何继续的提示 在没有发布我的代码的情况下(不确定我们是否可以在这里这样做),主要调整大小部分的伪代码是这样的: for each scanline { for number of times to extend vertically { for each pixel in infile { read pixel from

我读了几篇关于同一个问题的帖子,但大多数帖子对这个更容易的问题的处理方式似乎与我不同,因此我很难找到关于如何继续的提示

在没有发布我的代码的情况下(不确定我们是否可以在这里这样做),主要调整大小部分的伪代码是这样的:

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次,所以我想在进入循环之前,我必须知道四舍五入的比例是多少。我甚至不能开始考虑用这种方式缩小一些东西。。。我可能必须跳过循环中的某些像素才能做到这一点?似乎是一种完全不同的机制,可能会弄乱最终的图像


无论如何,任何帮助都是感激的

有3种不同的算法,取决于调整大小因子:因子>1(您已经提供了伪代码)、因子<1(另一种算法)和因子==1(不做任何事情,您已经有了正确的大小)。有3种不同的算法,取决于调整大小因子:因子>1(您已经提供了伪代码)、因子<1(另一个算法)和factor==1(不做任何操作,您已经有了正确的大小)。