PDA

Volledige versie bekijken : Flash naar Jpeg omzetten


K'Tagh
%Europe/Berlin %663 %2007, 15:54
Hallo allemaal,
ik wil graag dat mensen door middel van een button een gedeelte van een fla kunnen omzetten naar jpeg zodat ze dit kunnen versturen per mail. Het heeft dus iets met exporteren vandoen. Enige tips?

Jan
%Europe/Berlin %809 %2007, 19:25
Hallo allemaal,
ik wil graag dat mensen door middel van een button een gedeelte van een fla kunnen omzetten naar jpeg zodat ze dit kunnen versturen per mail. Het heeft dus iets met exporteren vandoen. Enige tips?
Je moet de mc die je wil versturen eerst omzetten naar een BitmapData Object.
var bmp:BitmapData = new BitmapData(mc._width,mc._height,false);
bmp.draw(mc);
Vervolgens via een for loop de kleur van elke pixel in een string opslaan.
bmp.getPixel(x, y).toString(16)
Deze string stuur je naar een php script.
En met je php script maak je eerst een lege afbeelding aan en vervolgens kleur je met een 'for loop' elke pixel in deze afbeelding in met de data van elke pixel die je vanuit flash gekregen hebt en dan kan je deze jpg via php als attachment versturen. Zo simpel is het. :)

Groeten,
Jan

PS: edit:
Ik veronderstel dat je een gedeelte van je swf bedoelt ipv je fla.
Trouwens:
Als je slechts een gedeelte van een mc wil nemen moet je die volgens mij eerst in een BitmapDataObject steken.
Dan een extra (leeg) BitmapData Object aanmaken en van het BitmapData object dat de ganse mc bevat kan je via copyPixels + een source rectangle (waarvan je de x,y, width en height opgeeft binnen die mc=BitmapData) een gedeelte naar dit nieuwe lege BitmapData Object kopiëren en dan stuur je dit laatste BitmapData object door naar php.

K'Tagh
%Europe/Berlin %578 %2007, 13:53
Ik wil dat enkel het gedeelte binnen de rode lijnen (Donald + de achtergrond + de tekstballon) omgezet worden naar jpeg. Ze zijn allemaal losse mc's en er is zelfs keuze uit 5 verschilende achtergronden, hoofde, lichamen en benen.
Is er geen manier om te selecteren dat alleen wat binnen de rode lijnen staat omgezet wordt naar jpeg? Of moet ik alle lose onderdelen, die buiten het kader vallen uiteraard, ook omzetten naar een BitmapData Object?

Jan
%Europe/Berlin %680 %2007, 16:20
Is er geen manier om te selecteren dat alleen wat binnen de rode lijnen staat omgezet wordt naar jpeg?
Tuurlijk. :)
import flash.display.BitmapData;
import flash.geom.Rectangle;
var bmp_stage:BitmapData=new BitmapData(Stage.width, Stage.height);
bmp_stage.draw(this)
//Je ganse stage zit nu in bmp_stage
//Een rechthoek daaruit kopiëren we naar een nieuw BitMapData Object (bmp_rechthoek)
//Die rechthoek wordt uiteindelijk de jpeg.
var rechthoek_x:Number=300;// x positie(op je stage) van de rechthoek die je wil
var rechthoek_y:Number=200;// y positie(op je stage) van de rechthoek die je wil
var rechthoek_breedte:Number=250;// breedte van de rechthoek die je wil
var rechthoek_hoogte:Number=200;// hoogte van de rechthoek die je wel
var rechthoek:Rectangle=new Rectangle(rechthoek_x,rechthoek_y,rechthoek_breedt e,rechthoek_hoogte)
//Nieuw BitmapData Object aanmaken dat even groot is als de rechthoek
var bmp_rechthoek:BitmapData=new BitmapData(rechthoek_breedte, rechthoek_hoogte);
//kopiëren de nodige pixels(=de rechthoek) uit de originele bmp (= ganse stage) naar het nieuwe BitmapData Object
bmp_rechthoek.copyPixels(bmp_stage,rechthoek,new Point(0,0));
//om te zien wat je gekopieerd hebt kan je:
this.createEmptyMovieClip("mc_bmp", this.getNextHighestDepth());
mc_bmp.attachBitmap(bmp_rechthoek, this.getNextHighestDepth());
mc_bmp._x=50;
mc_bmp._y=50;
//dmv van een for loop doorloop je nu alle pixels in het bmp_rechthoek object
//die zet je in een laaaaaaaaaaaaaaaaaaange string
//en die string stuur je door naar je php script
//in php maak je een lege image(jpeg)
//in php gebruik je dezelfde for loop om deze keer:
//de data van elke pixel te kopiëren naar de 'lege' pixels in de 'lege' image die je hebt aangemaakt in php.
//die image kan je via php ofwel opslaan ofwel onmiddellijk doorsturen als attachment en daarna 'weggooien'.
//Veel succes. You're gonna need it. ;-)

Groeten,
Jan

PS: ik heb een omweg gemaakt dmv copyPixels.
Normaal gezien kan je al bij de eerste draw een source Rectangle meegeven (maar die kreeg ik niet werkend :X )
Je kan bovenstaand script kopiëren naar een leeg keyframe en wat spelen met de afmetingen van de rechthoek. Voor de rest hoef je niks te veranderen. Maar je moet wel nog de gegevens doorsturen naar jouw php script.