调整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(不做任何操作,您已经有了正确的大小)。