Просмотр полной версии : JPEGEncoder виснет браузер
Makkssimka
06.06.2013, 19:28
Доброго времени суток! При перекодировки фото (средний вес 15 Mb) из BitmapData в ByteArray для последующей загрузке на сервер с помощью JPEGEncoder:
var img:ByteArray = new JPEGEncoder(90).encode(origBit);
Опера виснет на несколько секунд(10-15), причем пишет нет ответа. Вопрос как это можно исправить, заменить чем-либо, хотя бы чтоб выводилось идет обработка фото (просто нет у JPEGEncoder слушателя прогресса как и других)?
Вроде с какого то плеера можно параллельно пускать
Добавлено через 3 минуты
Хотя я вас вроде обманул.
Здесь посмотрите http://www.bytearray.org/?p=775
Makkssimka, попробуйте нативный энкодер. http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#encode()
AlexCooper
06.06.2013, 22:02
Могу ошибаться но я бы сначало
private function extractBmpd( ARG_object:DisplayObject, ARG_x:Number, ARG_y:Number, ARG_width:Number, ARG_height:Number):BitmapData {
var cropArea:Rectangle = new Rectangle(0, 0, ARG_width, ARG_height);
var bmpd:BitmapData = new BitmapData(ARG_width, ARG_height);
var croppedBitmap:Bitmap = new Bitmap(bmpd, PixelSnapping.ALWAYS, true);
var cropMatrix:Matrix = new Matrix();
cropMatrix.translate(-ARG_x, -ARG_y);
bmpd.draw( ARG_object, cropMatrix, null, null, cropArea, true );
return bmpd;
} после уже перекодировал, но все конечно зависит от размера. Можно по частям резать и по частям отправлять как вариант.
Makkssimka
11.06.2013, 19:44
Всем спасибо за помощь, разобрался! Нашел интересный класс, он поддерживает не только асинхронность, но позаоляет вешать слушатели событий http://tech.pro/tutorial/722/flex-tutorial-an-asynchronous-jpeg-encoder
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.