【发布时间】:2015-01-07 16:49:12
【问题描述】:
我遇到了一个问题,我必须将图像大小调整为 2 的幂才能加载到 Three.js。我使用以下方法来调整它们的大小:
var w = powerOf2Down(this.width);
var scale = w / this.width;
var scaledHeight = this.height * scale;
var h = powerOf2Up(scaledHeight);
var scaleFactor = ( this.width / w) * ( this.height / h ) * 0.1;
photo.scale.normalize().multiplyScalar(scaleFactor);
function powerOf2Down(value)
{
if(value < 80)
return 64;
else if(value < 150)
return 128;
else if(value < 400)
return 256;
else if(value < 800)
return 512;
return 1024;
}
function powerOf2Up(value)
{
if(value <= 64)
return 64;
else if(value <= 128)
return 128;
else if(value <= 256)
return 256;
else if(value <= 512)
return 512;
return 1024;
}
这在大多数地方都有效,但有时它的规模太大了。我想知道在最小的一侧添加空白而不是缩放可能控制更好。
是否可以在画布中执行此操作并向 PNG 添加透明空间?
编辑
这是将图像缩放到 2 的幂并保持纵横比的正确方法吗?
我正在寻找的东西我认为与此相反 Automatically Crop HTML5 canvas to contents
【问题讨论】:
标签: javascript canvas 3d three.js