我想改变图像的分辨率(nHeight =图片的高度),使其可分为8。我使用下面的python代码。有人能帮助我吗?
if (nHeight%8 != 0):
try:
while (nHeight%8 == 0):
nHeight = nHeight +1
print(nHeight%8)
except:
pass
3条答案
按热度按时间ryhaxcpt1#
你的意思是这样的:
假设
n_height
在运行上面的代码块之前是17,那么运行之后它将是24。if
块不是必需的,因为如果分辨率大小已经可以被8整除,while
将不会执行。希望这个有用。
edqdpe6u2#
下面是一个更简单的形式,不使用循环或 try /*(除了 * 块),而是使用数学运算:
秘密是
n // 8
,它被称为 floor division([Python 2.Docs]:二进制算术运算)。你也可以使用常规除法......假设 nHeight 是一个整数--如果分辨率是以像素表示的话,这是有意义的。
整个表达式等价于
nHeight = (nHeight // 8 + 1) * 8
。oxf4rvwz3#
您的代码有一个错误:
while (nHeight%8 == 0)
必须是while (nHeight%8 != 0)
,但这并不重要,因为通过一个简单的表达式就可以很容易地完成您想要完成的任务,该表达式完全消除了while
循环和if
测试://
是整数除法,去掉余数。通过在除法之前加上7,如果它已经可以被8整除,你不会改变结果,但是如果它不能被8整除,你会把除法结果加1;再次乘以8补偿了除法,并使得结果显然可被8除尽。P.S.在Python中看到匈牙利符号是很不寻常的,它违反了PEP 8准则。