triton
کاربر فعال
سلام
من یه کلاس واسه لود فایل های bmp نوشتم که فایل ها را لود می کنه ولی توی save اونها به مشکل بر خوردم.کلاس به صورت زیر هستش:
چند روزی هست که به اون ور می روم ولی انگار نمی خواد درست بشه ...لطفا کمک کنید.
من یه کلاس واسه لود فایل های bmp نوشتم که فایل ها را لود می کنه ولی توی save اونها به مشکل بر خوردم.کلاس به صورت زیر هستش:
PHP:
package lib.flash.display.image
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.events.SecurityErrorEvent;
import flash.net.FileReference;
import flash.utils.ByteArray;
import flash.utils.Endian;
import flash.events.EventDispatcher;
/**
* ...
* @author Mahdi Abedi
*/
public class BMPDecode extends EventDispatcher
{
//---------------- evetns -----------
//---------when load complete: flash.events.Event.COMPLETE
//-------------- variables ----------------
private var fr:FileReference;
//-------------- gets/sets -----------
private var _bitmapData:BitmapData;
public function get bitmapData():BitmapData {
return _bitmapData;
}
//-------------- methods -------------
public function BMPDecode()
{
}
public function browse(typeFilter:Array = null):void {
fr = new FileReference();
fr.addEventListener(Event.SELECT, onSelect);
fr.addEventListener(Event.COMPLETE, onComplete);
fr.browse(typeFilter);
}
/*public function save(defaultFileName:String = null):void {
if (defaultFileName == null) {
defaultFileName = fr.name;
}
fr.save( fr.data , defaultFileName);
}*/
//------------- handlers --------------
private function onSelect(e:Event):void {
fr.load();
}
private function onComplete(e:Event):void {
var ba:ByteArray = fr.data;
ba.endian = Endian.LITTLE_ENDIAN;
ba.position = 10;
var pixelOffset:uint = ba.readUnsignedInt();
ba.position += 4;
var width:int = ba.readInt();
var height:int = ba.readInt();
ba.position = pixelOffset;
var padding:int = (width * 3) % 4;
_bitmapData = new BitmapData(width, height, false);
for (var y:int = height - 1; y >= 0;--y) {
for (var x:int = 0; x < width; ++x) {
_bitmapData.setPixel(x, y, ba.readUnsignedByte() |
ba.readUnsignedByte() << 8 |
ba.readUnsignedByte() << 16 );
}
ba.position += padding;
}
//--------- dispatch COMPLETE event
dispatchEvent(new Event(Event.COMPLETE));
}
}
}