我一直在阅读有关同一问题的几篇文章,但是大多数人似乎比我更容易地解决了这个更简单的问题,所以我很难找到有关如何进行的技巧。
在没有发布我的代码的情况下(不确定我们是否可以在此处执行此操作),主要调整大小部分的伪代码有点像这样:
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次,所以我想在进入循环之前我必须先知道四舍五入的比例。我什至无法开始考虑以这种方式缩小某些内容……我可能必须跳过循环中的某些像素才能做到这一点?似乎是一种完全不同的机制,可能会弄乱生成的图像。
无论如何,我们将不胜感激!