【问题标题】:Loss of image quality when zooming in Flex Mobile application放大 Flex 移动应用程序时图像质量下降
【发布时间】:2011-07-11 18:34:25
【问题描述】:

我有一个在 Adob​​e Flex (Flash Builder 4) 中创建的移动应用程序,我正在尝试创建一个缩放功能。我有一个作品,但重点是能够更轻松地阅读图像中的单词(图像是 .jpg 文件)。这些图像最初是 2550x3300,但是一旦您放大,图像质量就会急剧下降,并且无法读取任何内容。

我的缩放功能代码如下。

        protected function onZoom(e:TransformGestureEvent, img:Image):void
        {
            img.transformAround(new Vector3D(e.localX, e.localY, 0), new Vector3D(img.scaleX*e.scaleX, img.scaleY*e.scaleY, 0));
        }

这是图像对象的代码:

<s:Image id="titlepage" includeIn="title_page" x="0" y="0" width="320" height="415" 
         gesturePan="onPan(event, titlepage)" 
         gestureSwipe="onSwipe(event)" 
         gestureZoom="onZoom(event, titlepage)" 
         source="@Embed('assets/myImage.jpg')"/>

【问题讨论】:

  • 围绕 Image 对象显示更多代码。另外,为什么要进行变换而不只是缩放图像?
  • 添加了图像对象的代码。而在此之前,缩放只是简单地增加和减少大小,transformAround() 方法允许您将动作锚定到您正在放大的点。你能用另一种方式做到这一点吗?
  • 使用img.scaleX *= e.scaleX; img.scaleY *= e.scaleY; 放大图片而没有太大的质量损失,但仍会放大到左上角。有没有办法让它锚定在你的手指实际缩放的地方?

标签: apache-flex mobile flash-builder zooming


【解决方案1】:

通过将平滑设置为 true 以进行抗锯齿,可以提高图像质量。

有很多方法可以处理注册问题 - 您可能对 Yahoo Astra utils DynamicRegistration class 感兴趣。

也许是这样的?

脚本>

【讨论】:

  • 您是否遇到错误,或者您能描述一下功能问题吗?
  • @JacobL,使用他提到的那个类怎么样。这是完美的,因为它可以缩放图像并保持触摸事件的注册点,就像你想要的那样。
  • @Jason Sturges,在该课程中找到了不错的发现,我肯定会使用它而不是只做我自己的算法 :)
  • 我试过这个,复制并粘贴代码,它仍然和缩放一样。缩放功能仍然锚定在左上角 (0,0)。
  • @Jason @J_A_X,我觉得这很奇怪,因为当我使用相同的功能进行“双击缩放”时,它做了正确的事情,缩放到注册点。函数调用的唯一区别是我使用 2 作为缩放因子而不是动态缩放因子。
【解决方案2】:

我对此并不积极,但我认为“转换”功能会从您的图像中创建一个位图,这就是您失去质量的原因。尝试在图像上使用“平滑”属性。

从那里开始,它只是逐步缩放和移动您的图像。但是,我不确定的是 localX/Y 属性是来自原始触摸位置,还是来自容器上的新位置(即,如果您从中间捏/缩放并缩放,将该点仍然在中间或左上角)。

我会尝试在我的手机上测试一下,看看我想出了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多