KCC运行报错'float' object cannot be interpreted as an integer求助
故障原因
运行KCC时抛出'float' object cannot be interpreted as an integer报错,核心原因为高版本Pillow(Python图像处理库)的Image.point()接口不再接收浮点型像素值参数,KCC原有自动对比度逻辑的像素计算结果为浮点型,未做整型转换就传入接口,触发类型错误。此前修改代码未命中实际需要转换的计算返回值位置,因此问题未解决。
报错溯源
根据回溯栈可定位出错代码位于kindlecomicconverter/image.py第261行:
self.image = ImageOps.autocontrast(Image.eval(self.image, lambda a: 255 * (a / 255) ** gamma))
该行lambda表达式255 * (a / 255) ** gamma的计算结果为float类型,传入后续point方法时不符合参数类型要求。
修复步骤
- 打开对应路径下的
image.py文件,找到第261行的原有代码 - 将该行代码替换为以下内容,对计算得到的像素值做四舍五入后显式转为整型,避免直接强转带来的精度损失:
self.image = ImageOps.autocontrast(Image.eval(self.image, lambda a: int(round(255 * (a / 255) ** gamma))))
- 保存修改后的文件,重新启动KCC处理漫画即可。
注意:如果后续运行时还出现同类浮点转整型报错,检查同文件内其他调用
Image.eval、image.point的代码段,对所有像素计算的返回值做相同的显式整型转换即可。
内容的提问来源于stack exchange,提问作者apau Vergara
相关产品推荐
相关产品推荐

