放大Flex Mobile应用程序时图像质量下降

时间:2011-07-11 18:34:25

标签: flex mobile flash-builder image-zoom

我有一个我在Adobe 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')"/>

2 个答案:

答案 0 :(得分:3)

通过为抗锯齿设置smooth to true,可以提高图像质量。

<s:Image smooth="true" />

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

也许是这样的?

    <fx:Script>
        <![CDATA[
            import com.yahoo.astra.utils.DynamicRegistration;

            protected function image_gestureZoomHandler(event:TransformGestureEvent):void
            {
                DynamicRegistration.scale(image,
                                          new Point(event.localX, event.localY),
                                          image.scaleX *= event.scaleX,
                                          image.scaleY *= event.scaleY);
            }
        ]]>
    </fx:Script>

    <s:Image id="image"
             smooth="true"
             gestureZoom="image_gestureZoomHandler(event)" />

答案 1 :(得分:0)

我对此并不乐观,但我认为'变换'功能会从你的Image中创建一个位图,这就是你失去质量的原因。尝试在图片上使用“平滑”属性。

从那里开始,它只是递增地缩放和移动图像。但是,我不确定的是localX / Y属性是来自原始触摸位置还是容器上的新位置(即,如果你从中间捏缩放,它会缩放,将会该点仍位于中间或略微左上方。)

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