Image Encode with Flash and PHP
hi, this is a little project to save export/save images from flash.
This application allow you to see how to export in different image formats like: png, jpg and bmp.
I create class ImageCreator, whit it it’s this easy create images on server. You call the class like this:
1 2 | var imagecreator:ImageCreator = new ImageCreator(image_spr, ImageCreator.EXPORT_TYPE_PNG, name); imagecreator.addEventListener(ImageCreator.EVENT_COMPLETE_SAVING, completeWritingEvent); |
Event ImageCreator.EVENT_COMPLETE_SAVING, will be dispatched when image is correctly saved on your server.
This is ImageCreator Class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | package com.stanislavstankov.images { import com.adobe.images.*; import flash.display.BitmapData; import flash.display.Sprite; import flash.events.Event; import flash.events.EventDispatcher; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; import flash.utils.ByteArray; public final class ImageCreator extends EventDispatcher { public static const EVENT_COMPLETE_SAVING:String = "eventCompleteSaving"; public static const EXPORT_TYPE_JPG:int = 0; public static const EXPORT_TYPE_PNG:int = 1; public static const EXPORT_TYPE_BMP:int = 2; private const _FOLDER_FILE:String = "http://projects.stanislavstankov.com/imageEncoder/php"; private const _PHP_FILE:String = "/imgEncoder.php"; private var _filename:String; /*------------------------------------ Constructor ------------------------------------*/ /** * ImageCreator will create image on the server where the php file is. * Event EVENT_COMPLETE_SAVING, will be dispatched when image is created on server. * Also there is one get propert filepath, that will return the path where the image is saved. * @param Dispaly object - sprite or moviclip that will be exported for image * @param type of image that will be saved * @param name of the file * @param background color if transperent, leave it 0. If you need background change the value. It is ARGB type. */ public function ImageCreator($displayObjectExport_:Sprite, $exportType_:int, $name_:String, $fillColorARGB_:uint = 0x0):void { var transperentFlag:Boolean = false; if ($exportType_ == EXPORT_TYPE_PNG) { transperentFlag = true; } const bmpdata:BitmapData = new BitmapData($displayObjectExport_.width, $displayObjectExport_.height, transperentFlag, $fillColorARGB_); bmpdata.draw($displayObjectExport_); createImage(bmpdata, $exportType_, $name_); } /*------------------------------------ Public methods ------------------------------------*/ public function get filepath():String { return _filename; } /*------------------------------------ Private methods ------------------------------------*/ private function createImage($bmpdata_:BitmapData, $exportType_:int, $name_:String):void { var byteArray:ByteArray; var contentType:String; switch ($exportType_) { case EXPORT_TYPE_JPG: var jpgencode:JPGEncoder = new JPGEncoder(100); byteArray = jpgencode.encode($bmpdata_); contentType = 'image/jpg'; $name_ += ".jpg"; break; case EXPORT_TYPE_PNG: byteArray = PNGEncoder.encode($bmpdata_); contentType = 'image/png'; $name_ += ".png"; break; case EXPORT_TYPE_BMP: byteArray = BMPEncoder.encode($bmpdata_); contentType = 'image/bmp'; $name_ += ".bmp"; break; default: break; } const request:URLRequest = new URLRequest(_FOLDER_FILE + _PHP_FILE + "?name=" + $name_); request.contentType = contentType; request.method = URLRequestMethod.POST; request.data = byteArray; const loader:URLLoader = new URLLoader(request); loader.addEventListener(Event.COMPLETE, loadResultHandler); } /*------------------------------------ Event Functions ------------------------------------*/ private function loadResultHandler(info:Event):void { info.target.removeEventListener(Event.COMPLETE, loadResultHandler); var urlvars:URLVariables = new URLVariables(info.target.data); _filename = _FOLDER_FILE + "/" + urlvars.filename; dispatchEvent(new Event(EVENT_COMPLETE_SAVING)); } } } |
PHP imgEncoder.php file:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php if (isset($GLOBALS["HTTP_RAW_POST_DATA"])) { //$fullFilePath = dirname(__FILE__) . "/" . $_GET['name']; $fullFilePath = $_GET['name']; $handle = fopen($fullFilePath,"w"); fwrite($handle, $GLOBALS["HTTP_RAW_POST_DATA"]); fclose($handle); echo "result=1&filename=" . $fullFilePath; } else { echo 'result=0'; } ?> |
Edit 14.09.2009
Flash video Player Snapshot

This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution 2.5 Bulgaria License.
