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

شروع موضوع توسط triton ‏16 فوریه 2011 در انجمن Action Script 3

  1. triton

    triton کاربر فعال

    ارسال‌ها:
    279
    تشکر شده:
    396
    امتیاز دستاورد:
    63
    سلام
    من یه کلاس واسه لود فایل های 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));
            }
        }

    }
     
    چند روزی هست که به اون ور می روم ولی انگار نمی خواد درست بشه ...لطفا کمک کنید.
     
    نوشته شده توسط triton در ‏16 فوریه 2011
  2. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    والا بهتره یه سمپل ساده fla هم می زاشتی تا راحت تر بررسی می کردیم . من خیلی وقت نکردم با کلاست ور برم و تا حالا هم خیلی با byte array سر encode وقت صر نکردم . کلاسترو یه نگاهی بنداز و کنار فولدر lib اون fla رو بزار و send کن تا سر فرصت ببینم و شاید به خواست خدا حللش کنم .
    بای...
     

    پیوست ها:

    • Triton.rar
      اندازه فایل:
      کیلوبایت 1.1
      نمایش ها:
      29
    نوشته شده توسط ++Hadi++ در ‏20 فوریه 2011
    hamidhp از این پست تشکر کرده است.
  3. triton

    triton کاربر فعال

    ارسال‌ها:
    279
    تشکر شده:
    396
    امتیاز دستاورد:
    63
    سلام
    کلاس خیلی ساده هست و فکر نمی کردم که به مشکل بربخورید، به هر حال با چند خط کد مثل زیر می تونید ازش استفاده کنید:
    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 در ‏25 فوریه 2011
  4. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    دان کن :
    بای...
     

    پیوست ها:

    • Tritron.rar
      اندازه فایل:
      کیلوبایت 129.8
      نمایش ها:
      79
    نوشته شده توسط ++Hadi++ در ‏5 مارس 2011
    mohammad.sub7 از این پست تشکر کرده است.
  5. triton

    triton کاربر فعال

    ارسال‌ها:
    279
    تشکر شده:
    396
    امتیاز دستاورد:
    63
    ++Hadi++ ممنون ولی من می خواهم همون BMP ذخیره بشه ... برای JPG ذخیره کردن که فکر نمی کنم کسی روی کره زمین مشکل داشته باشه (شوخی)
     
    نوشته شده توسط triton در ‏7 مارس 2011
  6. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    می گردم جوابشو بهت می گم فقط چجوریاست ، bmp رو می گیری و BMP پس می دی !!!
     
    نوشته شده توسط ++Hadi++ در ‏8 مارس 2011

به اشتراک بگذارید