Потеря качества изображения при масштабировании в приложении Flex Mobile - PullRequest
1 голос
/ 11 июля 2011

У меня есть мобильное приложение, которое я создаю в 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 ]

3 голосов
/ 12 июля 2011

Качество изображения можно улучшить, установив для сглаживания значение true для сглаживания.

<s:Image smooth="true" />

Существует множество способов решения проблем с регистрацией - вас может заинтересовать использование Yahoo Astra Класс DynamicRegistration .

Может как то так?

    <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)" />
0 голосов
/ 12 июля 2011

Я не уверен в этом, но я думаю, что функции 'transform' создают растровое изображение вашего изображения, поэтому вы теряете качество.Попробуйте использовать атрибут «сглаживания» на вашем изображении.

Оттуда, это просто масштабирование и перемещение вашего изображения постепенно.Однако в чем я не уверен, так это в том, что свойство localX / Y принадлежит исходному месту касания или новой позиции на контейнере (т. Е. Если вы увеличиваете или масштабируете от середины, и оно масштабируетсяточка все еще будет посередине или немного сверху слева).

Я попробую проверить это на своем телефоне и посмотреть, что я придумаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...