我想更改图像的分辨率(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
。