`

How many ways we can create a swf file?

阅读更多

we can create a swf movie in at least 3 way

 

1) by adobe flash, created from *.fla

2) by flex create from *.mxml

3) and we can create *.swf file by a backend controller, say, php or perl.

 

We now focus on 3). All we want is the open source swf library, named "Ming". It's a api to create swf file.

 

 

Here is what I think it can be used for:

 

1) protect your private image, you want to hide the url of your image and don't want others to say it as a local image file:

 

 

$path = "my_movie_dir"; //relative path to the jpg/png or bmp files 
$frame_rate=30; //frame rate of the flash movie 
$quality=50; //image quality during conversion (only valid if not jpeg) 
$skip_rate=5; //how many frames to skip 
set_time_limit("600"); //this could take some time 

$converter=new images_to_swf($path,$frame_rate,$skip_rate); 

//$converter->convert_images(70); //Use this if using non jpeg files or decreasing the quality 

$converter->make_movie();//Make the movie 

//Do two things with it 
$converter->save_movie("my_movie_dir/my_movie.swf"); 
$converter->output_movie(); 

class images_to_swf { 
    
    var $path; //path to the image files 
    var $skip_rate; 
    var $movie; 
    var $images=array(); 
    
    function images_to_swf($path,$frame_rate=30,$skip_rate=5) { 
        $this->path=$path; 
        $this->skip_rate=$skip_rate; 
        
        $this->movie=new swfmovie (); 
        $this->movie->setrate ($frame_rate); 
    } 
    
    function convert_images($quality=80,$delete_old_files=1) { 
        $main = opendir($this->path); 
        rewinddir($main); 
        //first convert to jpeg (if we have to) 
        //also change the quality 
        while($filename = readdir($main)) { 
            
            //only use valid file types 
            if (ereg("(png|bmp|jpg|jpeg)\$",$filename)) { 
                $file_path=$this->path."/".$filename; 
                
                if (ereg("png\$",$filename)) $temp_img=imagecreatefrompng ($file_path); 
                else if (ereg("bmp\$",$filename)) $temp_img=imagecreatefrompng ($file_path); 
                else if (ereg("(jpg|jpeg)\$",$filename)) $temp_img=imagecreatefromjpeg ($file_path); 
                
                if (ereg("(png|bmp)\$",$filename)) { 
                    if ($delete_old_files) unlink($file_path); 
                    $new_file_path=$file_path.".jpg"; 
                } 
                else $new_file_path=$file_path; 
                
                ImageJPEG($temp_img,$new_file_path,$quality); 
                
                //echo "Converted $filename to $new_file_path at quality $quality<br />"; 
            } 
        } 
    } 
    
    function make_movie() { 
        $main = opendir($this->path); 
        rewinddir($main); 
        //Get all valid jpegs 
        while($filename = readdir($main)) { 
            if (ereg("(jpg|jpeg)\$",$filename)) { 
                $file_path=$this->path."/".$filename; 
                $valid_paths[]=$file_path; 
            } 
        } 
        
        //Put jpegs in order 
        sort($valid_paths); 
        
        //then create the movie 
        for ($a=0; $a<count($valid_paths); $a=$a+$this->skip_rate) { 
            $fp = fopen($valid_paths[$a],"rb"); 
            $this->images[$a] = fread($fp,999999); 
            fclose($fp); 
            $this->movie->add(new swfbitmap($this->images[$a])); 
            $this->movie->nextframe(); 
            //echo "Added ".$valid_paths[$a]." to the movie<br />\n"; 
        } 
    } 
    
    function save_movie($file_name) { 
        $this->movie->save($file_name); 
    } 
    
    function output_movie() { 
        header('Content-type: application/x-shockwave-flash'); 
        $this->movie->output(); 
    } 

 

2) construct a complex flash componet according to your backend database

 

More sample can be reached at: http://www.gazbming.com/

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics