我想改变图像的分辨率(nHeight =图片的高度)并使其可以被8整除。我使用下面的python代码。任何人都可以帮助我吗?
if (nHeight%8 != 0):
try:
while (nHeight%8 == 0):
nHeight = nHeight +1
print(nHeight%8)
except:
pass
答案 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
是一个整数 - 如果是{分辨率以像素表示。
整个表达式相当于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()
指南。