我有一个我在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')"/>
答案 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属性是来自原始触摸位置还是容器上的新位置(即,如果你从中间捏缩放,它会缩放,将会该点仍位于中间或略微左上方。)
我会尝试在手机上测试一下,看看我想出了什么。