کمک در ساخت کلاس BMPDecode

triton

کاربر فعال
سلام
من یه کلاس واسه لود فایل های 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));
        }
    }

}
چند روزی هست که به اون ور می روم ولی انگار نمی خواد درست بشه ...لطفا کمک کنید.
 

++Hadi++

Active Member
والا بهتره یه سمپل ساده fla هم می زاشتی تا راحت تر بررسی می کردیم . من خیلی وقت نکردم با کلاست ور برم و تا حالا هم خیلی با byte array سر encode وقت صر نکردم . کلاسترو یه نگاهی بنداز و کنار فولدر lib اون fla رو بزار و send کن تا سر فرصت ببینم و شاید به خواست خدا حللش کنم .
بای...
 

پیوست ها

  • Triton.rar
    1.1 کیلوبایت · بازدیدها: 29

triton

کاربر فعال
سلام
کلاس خیلی ساده هست و فکر نمی کردم که به مشکل بربخورید، به هر حال با چند خط کد مثل زیر می تونید ازش استفاده کنید:
PHP:
import flash.display.Bitmap;
import flash.events.Event;
import flash.net.FileFilter;
import lib.flash.display.image.BMPDecode;

var bmp:BMPDecode = new BMPDecode();
bmp.browse([new FileFilter("BMP images", "*.bmp")]);
bmp.addEventListener(Event.COMPLETE, function() {
var image:Bitmap = new Bitmap(bmp.bitmapData);
stage.addChild(image);
	});
 

triton

کاربر فعال
++Hadi++ ممنون ولی من می خواهم همون BMP ذخیره بشه ... برای JPG ذخیره کردن که فکر نمی کنم کسی روی کره زمین مشکل داشته باشه (شوخی)
 

++Hadi++

Active Member
می گردم جوابشو بهت می گم فقط چجوریاست ، bmp رو می گیری و BMP پس می دی !!!
 

جدیدترین ارسال ها

بالا