如何基于除法改变分辨率的大小



我想更改图像的分辨率(nheight =图片的高度),并使其可将其分开。我使用以下Python代码。谁能为此帮助我吗?

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

您的意思是这样:

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

如果n_height是17,则在运行上述块之前,然后将是24。

if块不是必需的,因为如果您的分辨率大小已被8。

while无法执行。

希望这会有所帮助。

您的代码有一个错误:while (nHeight%8 == 0)需要为while (nHeight%8 != 0)。但这没关系,因为您想完成的简单表达式可以简单地消除while循环和if测试完全容易:

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

这适用于任何正数。//是整数部门,扔掉了其余部分。通过在分隔之前添加7个,如果结果已经排除在8,则不会更改结果,但是如果不是,则将划分结果撞到1。再次乘以8次补偿该划分,使结果很明显,结果将被排除在8。

P.S。在Python中看到匈牙利符号是非常不寻常的,它违反了PEP 8指南。

这是一个更简单的表单,不使用loops try // blocks,但数学操作:

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

秘密是n // 8,称为 floesdivision ([[Python 2.docs]:二进制算术操作)。
您也可以使用常规划分(ON python 2 )...良好的假设 nheight 是一个整数 - 如果以像素表示分辨率,则有意义。/p>

  • 整数部门返回商

  • 然后将 8 乘以获得最高 8 多重,小于号码

  • 最后,添加了另一个 8 以获取最低 8 多重,大于

整个表达式等效于nHeight = (nHeight // 8 + (1 if nHeight % 8 else 0)) * 8

最新更新