这几乎是一个简单的数学问题,但我对数学不好。假设我在做类似的事情:
let originalWidth = img.width;
let originalHeight = img.height;
for (let percent = 100; percent >= 10; percent -= 5) {
let percentScale = percent / 100;
let ctx = img.getContext("2d");
ctx.scale(percentScale, percentScale);
img.width = originalWidth * percentScale;
img.height = originalHeight * percentScale;
....
在此示例中,ctx.scale(percentScale, percentScale);
会将其缩放为上一次缩放迭代所得到的缩放比例的百分比,而我想要的是原始缩放比例的百分比,但是我不想复制原始对象并缩放每次都从那里开始,因为迭代缩放可以节省计算量,而性能是这里的一个因素。
我该如何更改我的代码以获得正确的数学结果?
答案 0 :(得分:1)
您可以取消最后一次应用的缩放因子:
compress = zlib.compressobj( 1, zlib.DEFLATED, -15, zlib.DEF_MEM_LEVEL, 0 )
deflated = compress.compress(string_to_compress)
encoded = base64.b64encode(deflated)
print(encoded)
答案 1 :(得分:0)
如果要在 n 个步骤中按比例缩放为 x 的因数,则每个步骤应按pow(x,1.0/n)
进行缩放