#actionscript-3 #adobe
#actionscript-3 #adobe
Вопрос:
Мне нужно преобразовать растровые данные, полученные из видеоклипа, в jpeg или png. Есть ли какая-нибудь библиотека для этого?
Ответ №1:
смотрите этот пример в разделе «Взять часть, которая преобразует байт в изображение», я привел его целиком для вашей справки
package {
import encoding.JPGEncoder;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.Sprite;
import flash.utils.ByteArray;
import flash.events.Event
public class Converter extends Sprite {
[Embed(source = "image.jpg")]
private var image:Class
private const QUALITY:uint = 80;
public function Converter():void {
var bitmap:Bitmap = new image();
var bitmapData:BitmapData = bitmap.bitmapData;
//encode BitmapData to JPG
var encoder:JPGEncoder = new JPGEncoder(QUALITY);
var rawBytes:ByteArray = encoder.encode(bitmap.bitmapData);
//decode JPG ByteArray back to BitmapData
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData)
loader.loadBytes(rawBytes);
}
private function getBitmapData(e:Event):void {
var decodedBitmapData:BitmapData = Bitmap(e.target.content).bitmapData
trace(decodedBitmapData);
}
}
}
Ответ №2:
Теперь вы можете использовать собственную кодировку jpeg, встроенную во Flash Player 11.3 и AIR 3.3.
var quality:int = 50;
var bounds:Rectangle = bitmapData.rect;
var result:ByteArray = bitmapData.encode(bounds, new JPEGEncoderOptions(50));
Это требует -swf-version=16
передачи компилятору.
Комментарии:
1. 1 для параметра -swf-version (не смог заставить кодировку работать самостоятельно, но это помогло)
Ответ №3:
Это не самый простой способ, но в зависимости от размеров вашего изображения, возможно, стоит посмотреть. Йенс Краузе скомпилировал jpeglib с помощью Alchemy, и он кодирует намного быстрее, чем версия as3corelib или даже улучшенная версия Тибо Имберта AS3:
http://www.websector.de/blog/2009/06/21/speed-up-jpeg-encoding-using-alchemy/
Комментарии:
1. хм, это очень интересно. Я никогда не думал, что можно добиться такого повышения производительности, используя алхимию!
2. В нашем приложении это было почти в 10 раз быстрее.