如何根据除法更改分辨率的大小

时间:2016-12-07 17:13:37

标签: python image-processing

我想改变图像的分辨率(nHeight =图片的高度)并使其可以被8整除。我使用下面的python代码。任何人都可以帮助我吗?

  if (nHeight%8 != 0):
            try:
                while (nHeight%8 == 0):
                    nHeight = nHeight +1
                    print(nHeight%8)
            except:
                pass

3 个答案:

答案 0 :(得分:1)

你的意思是这样的:

while n_height % 8 != 0:
        n_height += 1

如果是n_height,那就说17,在运行上面的块之前,然后它将是24。

if块不是必需的,因为如果您的分辨率大小已经被8整除,则while将不会执行。

希望这有帮助。

答案 1 :(得分:1)

这是不使用循环try / except块的简单形式,但数学运算:

if nHeight % 8:
    nHeight = nHeight // 8 * 8 + 8
print(nHeight)

秘密是n // 8 integer division(但你也可以使用常规除法......好吧假设nHeight是一个整数 - 如果是{分辨率以像素表示。

  • 整数除法返回商
  • 然后乘以8得到最高 8 倍,比我们的数字
  • 最后添加了另外8个来获得最低 8 倍,更高比我们的数字

整个表达式相当于nHeight = (nHeight // 8 + 1) * 8

答案 2 :(得分:0)

您的代码存在错误:while (nHeight%8 == 0)需要while (nHeight%8 != 0)。但这并不重要,因为您希望通过一个简单的表达式完成取消while循环和if测试:

nHeight = ((nHeight + 7) // 8) * 8

这适用于任何正数。 //是整数除法,抛弃其余部分。通过在除法前添加7,如果结果已经被8整除,则不会更改结果,但如果不是则将结果除以1;再乘以8可以补偿除法,并且很明显结果可以被8整除。

P.S。在Python中看到匈牙利符号是很不寻常的,这违反了ctx.restore()指南。