使用as3调整图像大小

发布于 2024-09-06 21:08:13 字数 1161 浏览 3 评论 0原文

我正在构建一个投资组合网站,当用户单击缩略图时,该网站会动态加载大型高分辨率图像。但是,在调整原始图像的大小以适应当前浏览器时,我在保持原始图像的质量方面遇到了问题。

目前我只是调整宽度和宽度图像的高度属性与舞台的宽度成比例,这可以很好地使其适合,但是我不知道如何保持图像质量?我是否需要将其加载为位图并重绘/平滑或类似的东西?

这是我当前正在使用的适当代码:

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);

I am building a portfolio site which dynamically loads large hi-res images when the user clicks on a thumnail. However I'm having problems maintaining the original image's quality when resizing it to fit the current browser.

Currently I'm just adjusting the width & height properties of the image to width to the stage proportionally which is working fine getting it to fit, however I cannot figure out how to maintain image quality? Do I need to load it as a bitmap and redraw/smooth or something similar?

This is the appropriate code that I am currently using:

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);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

提赋 2024-09-13 21:08:13

查看位图平滑

您的 Loader 将有一个 content 属性 它将是一个位图。将其smoothing 设置为 true。

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

    // ...

它使图像有点模糊,但在大多数情况下这是一个显着的改进。

Have a look at Bitmap smoothing.

Your Loader will have a content property which will be a Bitmap. Set it's smoothing to true.

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

    // ...

It makes the image a bit blurry but it is a significant improvement in most cases.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文