X
تبلیغات
پیکوفایل
رایتل
پشم سنگ عایق الاستومری
شنبه 7 آبان‌ماه سال 1390
توسط: آلفا پک

ذخیره محتویات movieclip به صورت عکس

در این مطلب نحوه ذخیره محتویات یک MovieClip به صورت عکس با فرمت JPEG در Air آموزش داده می‌شود. برای این کار با استفاده از  کلاسه Adobe Encoder یک ByteArray از محتویات MovieClip می‌سازیم و در ادامه این ByteArray را با فرمت JPEG ذخیره می‌کنیم.

دانلود کلاس های مورد نیاز : corelib.zip

1- برای شروع فایل corelib.zip را دانلود کرده و آن را Extract کنید.

۲- برنامه Flash را اجرا کنید و یک پروژه جدید از نوع Air بسازید.

۳- از منوی File گزینه ActionScript Settings را انتخاب کنید.

۴- از پنل Library path روی دکمه Add New Path کلیک کنید سپس روی دکمه Browse to SWC file کلیک کنید و فایل corelib.swc را انتخاب کنید.

۵- روی دکمه OK کلیک کنید تا پنجره ActionScript Settings بسته شود.

۶- روی فریم اول کلیک کنید و پنل Actions را باز کنید.

۷- کلاسه‌های مورد نیاز را Import کنید.

import flash.display.BitmapData;
import com.adobe.images.JPGEncoder;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;

8- یک متغیر از نوع BitmapData ایجاد کنید و طول و عرض آن را به اندازه MovieClip در نظر بگیرید و با دستور Draw محتویات MovieClip را به BitmapData منتقل کنید. (به جای my_mc نام MovieClip خود را وارد نمایید)

var bd:BitmapData = new BitmapData(my_mc.width, my_mc.height);
bd.draw(my_mc);

9- یک متغیر جدید از نوع JPGEncoder ایجاد کنید. (عدد داخل پرانتز کیفیت فایل خروجی را مشخص می‌کند و ماکزیمم آن ۱۰۰ می‌باشد)، در ادامه یک متغیر ByteArray هم بسازید.

var jpgEncoder:JPGEncoder = new JPGEncoder( 100 );
var byteArray:ByteArray = jpgEncoder.encode( bd );
  • به وسیله متغیرJPGEncoder محتویات BitmapData به فرمت JPEG تبدیل می‌شود و سپس در متغیر ByteArray قرار می‌گیرد.
var file:File = new File();
file = file.resolvePath("c:/test.jpg");
var stream:FileStream = new FileStream();

11- به وسیله کدهای زیر مراحل ذخیره سازی را به اتمام برسانید. در این کدها ابتدا File به صورت FileMode.WRITE در پروژه جاری می‌شود سپس به وسیله دستور writeBytes اطلاعات تبدیل شده ByteArray ذخیره می‌شود. دستور try و catch هم به منظور نمایش خطاهای احتمالی به کار گرفته شده است.

try {
stream.open( file , FileMode.WRITE);
stream.writeBytes(byteArray);
stream.close();
} catch (e:Error) {
trace("Error: " + e.message);
}