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';
}
?>

Source file here

Edit 14.09.2009
Flash video Player Snapshot

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

Comments are closed.