У меня проблема, когда мне нужно изменить размеры изображений на Power of 2 для загрузки в Three.js. У меня есть следующее, чтобы изменить их размер:Добавление прозрачного пространства в PNG для 3d
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