Расширенная обрезка изображений и изменение размера изображения в Flex

#apache-flex #resize #crop #bitmapdata #smooth

#apache-flex #изменение размера #обрезка #bitmapdata #сглаживание

Вопрос:

Я создал инструмент обрезки изображений в flex, используя основной метод copyPixel.

Обрезанные BitmapData.copyPixels (обрезанные BitmapData, clipCan, новая точка (0, 0));

Я должен обрезать область размером 20 * 20 и показать эту обрезанную область на изображении размером 250 * 350. Все идет хорошо. Моя проблема заключается в искажении изображения.

Даже я использую этот метод для полного сглаживания содержимого изображения.

 private function smoothImage(event:Event):void
{
    var bitmap: Bitmap = ((event.target as Image).content as Bitmap);
    if (bitmap != null) 
    {
     bitmap.smoothing = true;
    }
}
  

Я хочу получить результат этого сайта. http://www.yourplayingcards.com/builder

Пожалуйста, помогите мне избавиться от искажений изображения.

       Can we show bitmapdata of 20*20 into image of 250*350 without distotion?
  

Комментарии:

1. Я думаю, что если вы возьмете фрагмент растрового изображения размером 20×20 и увеличите его до 250×350, вам придется ожидать некоторого искажения. Это может быть меньше, если вы сохраните то же соотношение сторон (250×250 или 350×350), но, вероятно, ненамного. Манипулирование изображениями в реальном мире не такое, как на телевидении, где вы можете увеличить изображение, повысить резкость и теперь «видеть» сложные детали, такие как отражение лица в окне, которое раскрывает личность убийцы.

Ответ №1:

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

По сути, если вы хотите имитировать масштабирование веб-сайта, который вы показали, вам придется создать свою собственную векторную форму. Вы можете использовать Flex 4, встроенный в формат FXG, или использовать что-то вроде Degrafa, если вы все еще используете Flex 3. Вы также можете использовать Flash Catalyst для импорта векторной графики, выполненной в Illustration, в Flex.

Комментарии:

1. Как мы можем конвертировать изображения в формате png или jpg в векторы в flex 3. Возможно ли это в Flex 3.?

2. Это не ограничение Flex, а ограничение основного принципа работы с изображениями. Вы не можете преобразовать растровое изображение в векторное. Вам придется воссоздать его с помощью illustrator (или другого инструмента на основе векторных изображений), иначе вы застряли с растровыми изображениями, и лучшее, что вы можете сделать, это увеличить и сгладить его, но качество будет в лучшем случае «meh».

Ответ №2:

Я не уверен в этом, но это делается в VectorMagic, возможно, они тоже используют серверную часть любыми способами, вас также может заинтересовать средство визуализации Actionscript SVG

Надеется, что это поможет