Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/11/2010, 04:16
Ghosty
 
Fecha de Ingreso: junio-2008
Mensajes: 292
Antigüedad: 18 años, 5 meses
Puntos: 4
aligerar codigo

Hola amigos tengo un script en php con el cual guardo una captura de pantalla exa desde flash, el tema es que tarda como un millon de oras en crear la imagen mi pregunta es la siguiente ¿sabeis de algun otro modo de crear esta imagen? o si este codigo se puede aligerar de alguna mananera, no se?¿?? quitarle calidad a al jpg...o algo parecido...yo he intentado hacer la la captura mas pequeña pero sigue tardando mucho. muchas gracias por vuestra colaboracion

Código PHP:

<?php
    
//If GD library is not installed, say sorry
    
if(!function_exists("imagecreate")) die("Sorry, you need GD library to run this example");
    
//Capture Post data
    
$data = explode(",", $_POST['img']);
    
$width = $_POST['width'];
    
$height = $_POST['height'];

   
    
    
//Allocate image
    
$image=(imagecreate( $width ,$height ));
    
imagefill($image, 0, 0, 0xFFFFFF);
    
//Copy pixels
    
$i = 0;
    for(
$x=0; $x<=$width; $x++){
        for(
$y=0; $y<=$height; $y++){
            
$r = hexdec("0x".substr( $data[$i] , 2 , 2 ));
            
$g = hexdec("0x".substr( $data[$i] , 4 , 2 ));
            
$b = hexdec("0x".substr( $data[$i++] , 6 , 2 ));
            
$color = imagecolorallocate($image, $r, $g, $b);
            
imagesetpixel ($image,$x,$y,$color);
        }
    }

por si os puede ayudar aqui os dejo la parte flash AS 2

Código PHP:
function capture(nr)
{
    
   
    
snapshot = new BitmapData(950, 520);
    
//draw the current state of the Video object into 
    //the bitmap object with no transformations applied
    
snapshot.draw(_root ,new Matrix());
    
    var 
t:MovieClip = createEmptyMovieClip("bitmap_mc", 0);
    
t._x = 0;
    
t._y = 0;
    
t._xscale = t._yscale = 100;
    
//display the specified bitmap object inside the movie clip
    
t.attachBitmap(snapshot,1);
    var 
filterArray = new Array(myFilters[nr]);
    
t.filters = filterArray;
    
attachMovie("print_but","bot",100,{_x:t._x + t._width -450, _y:t._y + t._height / 2});
    
    
}
//Create a new bitmapdata, resize it 50 %, pass image data to a server script
// using a LoadVars object (large packet)
function output(who)
{
    
//preloader visible 
    
preloader._visible = true;
    
//Here we will copy pixels data
    
var pixels:Array = new Array();
    
//Create a new BitmapData
    
var snap = new BitmapData(who.width, who.height);
    
//Matrix to scale the new image
    
myMatrix = new Matrix();
    
myMatrix.scale(0.5,0.5);
    
//Copy video image
    
snap.draw(who,myMatrix);
    
//Uncoment this line if you want to apply filters instead of just capturing source
    // results should be adjusted based on your library version, not recomended
    //snap.applyFilter(snap, snap.rectangle, snap.rectangle.topLeft, myFilters[nr])
    
var w:Number = snap.width, tmp;
    var 
h:Number = snap.height;
    
//Build pixels array using an onEnterframe to avoid timeouts, capture a row per iteration, show a progressbar
    
var a:Number = 0;
    
this.onEnterFrame = function()
    {
        for (var 
b = 0; b <= h; b++)
        {
            var 
alpha:String = (snap.getPixel32(a, b) >> 24 & 0xFF).toString(16);
            var 
red:String = (snap.getPixel32(a, b) >> 16 & 0xFF).toString(16);
            var 
green:String = (snap.getPixel32(a, b) >> 8 & 0xFF).toString(16);
            var 
blue:String = (snap.getPixel32(a, b) & 0xFF).toString(16);
            
tmp = "0x" + red + green + blue;
            
pixels.push(tmp);
        }
        
perc = int((a * 100) / w);
        
preloader.perc.text = perc + " %";
        
preloader.barra._xscale = perc;
        
a++;
        if (
a > w)
        {
//Finish capturing
            
preloader._visible = false;
            
sendData(pixels,h,w,nombre);
            
//free memory
            
snap.dispose();
            
delete this.onEnterFrame;
        }
    };
}
//Capture a clip into a BitmapData object and pass whitout resizing
function outputClip(who)
{
    
//preloader visible 
    
preloader._visible = true;
    
//Here we will copy pixels data
    
var pixels:Array = new Array();
    
//Create a new BitmapData
    
var snap = new BitmapData(who._width, who._height);
    
snap.draw(who);
    var 
w:Number = snap.width, tmp;
    var 
h:Number = snap.height;
    
//Build pixels array using an onEnterframe to avoid timeouts, capture a row per iteration, show a progressbar
    
var a:Number = 0;
    
this.onEnterFrame = function()
    {
        for (var 
b = 0; b <= h; b++)
        {
            
tmp = snap.getPixel32(a, b).toString(16);
            
pixels.push(tmp.substr(1));
        }
        
perc = int((a * 100) / w);
        
preloader.perc.text = perc + " %";
        
preloader.barra._xscale = perc;
        
a++;
        if (
a > w)
        {
//Finish capturing
            
preloader._visible = false;
            
sendData(pixels,h,w,nombre);
            
//free memory
            
snap.dispose();
            
delete this.onEnterFrame;
        }
    };
}
function 
sendData(pixels:Array, h:Number, w:Number)
{
    
//Create the LoadVars object and pass data to PHP script
    
    
var output:LoadVars = new LoadVars();
    
output.img = pixels.toString();
    
output.height = h;
    
output.width = w;
    
output.nombre = nombre;     
    
output.archivo=archivo;
    
output.precio = teeTotals.myTotal;
    
output.imgdelantera=imgdelantera;
    
output.imgtrasera=imgtrasera;
    
output.menS=menS;
    
output.menM=menM;
    
output.menL=menL;
    
output.menXL=menXL;
    
output.menXXL=menXXL;
    
output.menXXXL=menXXXL;
    
output.womenXS=womenXS;
    
output.womenS=womenS;
    
output.womenM=womenM;
    
output.womenL=womenL;
    
output.womenXL=womenXL;
    
output.womenXXL=womenXXL;
    
//The page (and this movie itself) should be in a server to work
    
output.send("show.php","output","POST");