Изменение размера изображения с использованием as3 - PullRequest
2 голосов
/ 23 июня 2010

Я создаю сайт-портфолио, который динамически загружает большие изображения в высоком разрешении, когда пользователь нажимает на thumnail.Однако у меня возникают проблемы с сохранением качества исходного изображения при изменении его размера в соответствии с текущим браузером.

В настоящее время я просто подгоняю свойства ширины и высоты изображения по ширине к сцене пропорционально, что прекрасно работает, чтобы подогнать его под размер, однако я не могу понять, как сохранить качество изображения?Нужно ли загружать его как растровое изображение и перерисовывать / сглаживать или что-то подобное?

Это соответствующий код, который я сейчас использую:

var req:URLRequest = new URLRequest("images/101.jpg");
var loader:Loader = new Loader();

var widthRatio:Number;
var heightRatio:Number;

function imageLoaded(e:Event):void
{
 //add image to stage
 addChild(loader);


 // resize proportionally
 if (loader.width > stage.stageWidth){
  widthRatio=loader.width/stage.stageWidth;
  trace(widthRatio)
  trace(loader.width);
 }
 if (loader.height > stage.stageHeight){
  heightRatio=loader.height/stage.stageHeight;
  trace(heightRatio)
  trace(loader.height)
 }

 if (widthRatio > heightRatio){
  loader.width = stage.stageWidth;
  loader.height = loader.height/widthRatio;
 } else {
  loader.height = stage.stageHeight;
  loader.width = loader.width/heightRatio;
 }

 //centre on stage
 loader.x=stage.stageWidth/2 - loader.width/2;
 loader.y=stage.stageHeight/2 - loader.height/2;

}

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
loader.load(req);

1 Ответ

6 голосов
/ 23 июня 2010

Взгляните на Растровое сглаживание .

Ваш Loader будет иметь свойство содержимого , которое будет Bitmap. Установите для smoothing значение true.

function imageLoaded(e:Event):void
{
    //add image to stage
    addChild(loader);
    Bitmap(loader.content).smoothing = true;

    // ...

Это делает изображение немного размытым, но в большинстве случаев это значительное улучшение.

...