Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Плохое качество изображения, сохраненного через BitmapData (http://www.flasher.ru/forum/showthread.php?t=132969)

xpymbl4 24.11.2009 16:06

Плохое качество изображения, сохраненного через BitmapData
 
Использую com.adobe.images.JPGEncoder:
Код AS3:

var jpgSource:BitmapData = new BitmapData (mcForBitmap.width, mcForBitmap.height);
jpgSource.draw(mcForBitmap);
var jpgEncoder:JPGEncoder = new JPGEncoder(300);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
_fileContentType = 'image/jpg';

Далее, jpgStream пересылаю на сервер, используя готовый MultipartURLLoader.
Качество изображения моего mcForBitmap на сервере оказывается просто ужасным :(

mcForBitmap - много флешевого вектора.
Пробывал подгружать png изображения и извлекать ByteArray без использования BitmapData (качество отличное - все как есть):
Код AS3:

var jpgStream:ByteArray = event.currentTarget.data as ByteArray;
 _fileContentType = event.currentTarget.contentType;

При использовании PNGEncoder качество такое же ужасное как и с JPGEncoder.
Неужели BitmapData так портит картинку? Есть способ решить проблему? Заранее спасибо.

Партизан 24.11.2009 16:17

Попробуйте так:
Код AS3:

var jpgSource:BitmapData = new BitmapData (mcForBitmap.width, mcForBitmap.height);
jpgSource.draw(mcForBitmap);
var jpgEncoder:JPGEncoder = new JPGEncoder(80);
var jpgStream:ByteArray = jpgEncoder.encode(jpgSource);
_fileContentType = 'image/jpg';


xpymbl4 24.11.2009 16:37

Это без разницы... там в исходниках:
Код AS3:

public function JPGEncoder(quality:Number = 50)
{
    if (quality <= 0) {
        quality = 1;
    }
    if (quality > 100) {
        quality = 100;
    }
...


alatar 24.11.2009 19:13

И что такого вы нашли в этом куске исходника? Значение по-умолчанию?

xpymbl4 24.11.2009 19:31

к сожалению, поэкспериментировав с quality (качеством), удовлетворительных результатов не получил.. почти одинаково плохо с 50, 80, 100.

Nucer 04.07.2011 17:13

Столкнулся с такой же проблемой... При рисовании больших объектов на битмап дате - всё становится каким то размытым...
Не нашли решение?

fish_r 04.07.2011 18:50

У топикстартера траблы были, действительно, не с кодировщиком а с draw()-ом, кажется. Потому, что драв рисует символы так как они содержатся в библиотеке а не выглядят на сцене.

А у вас, похоже, проблемы не с битмапдатой, а с отрисовкой битмапдаты в битмапе, что то, возможно, связанное с масштабированием, может быть матрицей... Что то такое, мне кажется.

Nucer 04.07.2011 21:14

Да не на самом деле вся проблема оказалось в том, что при масштабировании самого Bitmap'а (точнее при отображении битмапа на сцене) флэш юзает какой то левый алгоритм интерполяции... Всё получается смазанным... Сейчас пытаюсь прикручивать билейную интерполяцию (к ж*пе ручку.... )

Добавлено через 2 часа 12 минут
загуглив, нашёл такую тему
http://www.clevr.com/blog/2008/resiz...interpolation/
https://github.com/ascorbic/clevrlib/

респектище автору либы!!!))


Часовой пояс GMT +4, время: 08:13.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.