begin process at 2012 05 26 06:22:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > MODULE D'IMPORTATION D'IMAGE, RETOUCHE ET RECADRAGE POUR UN AVATAR

MODULE D'IMPORTATION D'IMAGE, RETOUCHE ET RECADRAGE POUR UN AVATAR


 Information sur la source

Note :
Aucune note
Catégorie :ActionScripts Classé sous :retouche image, import image, export image, contrast, luminosity Niveau :Initié Date de création :08/04/2010 Date de mise à jour :19/04/2010 12:00:42 Vu / téléchargé :2 679 / 350

Auteur : choucroute987

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Module Flash d'importation d'une image et réglage de ses dimensions, son contraste, sa luminosité et sa saturation. Le tout recadré et externalisé vers un script php qui sauvegarde l'image sur le serveur et l'affiche.
J'ai fait le debug très récemment. Si vous trouvez un bug, pourriez-vous m'en faire part. Merci d'avance...

Source

  • stop();
  • /**
  • * INIT
  • **/
  • import com.adobe.images.JPGEncoder;
  • console.text = '[BEGIN]';
  • //movieClips
  • var myImage:MovieClip = container;
  • var myMoveStage:MovieClip = moveStage;
  • var myBrowser:MovieClip = browser;
  • var myAllShadow:MovieClip = allShadow;
  • //Timer
  • var moveTimer:Timer = new Timer(40);
  • var cursorTimer:Timer = new Timer(40);
  • var shadowTimer:Timer = new Timer(40);
  • //myImage
  • var fileRef:FileReference;
  • var myImageMouseX:Number;
  • var myImageMouseY:Number;
  • var myImageX:Number;
  • var myImageY:Number;
  • var myImageWidth:Number;
  • var myImageHeight:Number;
  • var myImageBaseWidth:Number;
  • var myImageBaseHeight:Number;
  • var myMoveStagePadding:Number = 30;
  • var bntResizeHorizontal:String;
  • var bntResizeVertical:String;
  • //filters
  • var luminosity:Number;
  • var contrast:Number;
  • var saturation:Number;
  • //handCursor on bnt
  • bntResize1.buttonMode = true;
  • bntResize2.buttonMode = true;
  • bntResize3.buttonMode = true;
  • bntResize4.buttonMode = true;
  • bntLuminosity.buttonMode = true;
  • bntContrast.buttonMode = true;
  • bntSaturation.buttonMode = true;
  • browser.bntBrowser.buttonMode = true;
  • bntResize1.visible = false;
  • bntResize2.visible = false;
  • bntResize3.visible = false;
  • bntResize4.visible = false;
  • cursorHandOpen.visible = false;
  • /**
  • * BNT BROWSE
  • **/
  • function onBrowser(e:MouseEvent):void
  • {
  • console.appendText(' > onBrowser');
  • fileRef = new FileReference();
  • fileRef.addEventListener(Event.SELECT, onBrowserSelect);
  • var imagesFilter:FileFilter = new FileFilter("Images", "*.jpg;*.jpeg;*.gif;*.png");
  • fileRef.browse([imagesFilter]);
  • }
  • function onBrowserSelect(e:Event):void
  • {
  • console.appendText(' > onBrowserSelect');
  • e.target.load();
  • e.target.addEventListener(Event.COMPLETE, onInitImage);
  • fileRef.removeEventListener(Event.SELECT, onBrowserSelect);
  • browser.bntBrowser.removeEventListener(MouseEvent.MOUSE_DOWN, onBrowser);
  • }
  • /**
  • * INIT POSITION DES ELEMENTS
  • **/
  • function onInitPosition():void
  • {
  • console.appendText(' > onInitPosition');
  • //positionnement du cadre de la zone a sauver
  • saveZone.x = myMoveStage.x + myMoveStage.width/2 - saveZone.width/2;
  • saveZone.y = myMoveStage.y + myMoveStage.height/2 - saveZone.height/2;
  • //positionnement des boutons sur les scrollBar
  • bntLuminosity.x = scrollBackLuminosity.width/2 + scrollBackLuminosity.x;
  • bntContrast.x = scrollBackContrast.width/2 + scrollBackContrast.x;
  • bntSaturation.x = scrollBackSaturation.width/2 + scrollBackSaturation.x;
  • bntLuminosity.y = scrollBackLuminosity.y;
  • bntContrast.y = scrollBackContrast.y;
  • bntSaturation.y = scrollBackSaturation.y;
  • }
  • /**
  • * INIT IMAGE
  • **/
  • function onInitImage(e:Event):void
  • {
  • console.appendText(' > onInitImage');
  • var myLoad:Loader = new Loader();
  • myLoad.loadBytes(e.target.data);
  • myLoad.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingImageComplete);
  • var bmpData:BitmapData;
  • var bmp:Bitmap;
  • function onLoadingImageComplete(e:Event):void
  • {
  • console.appendText(' > onLoadingImageComplete');
  • myLoad.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadingImageComplete);
  • // Lissage de l'image et affichage
  • bmpData = new BitmapData(e.target.content.width, e.target.content.height);
  • bmpData.draw(e.target.content);
  • bmp = new Bitmap(bmpData, "auto", true);
  • myImage.addChild(bmp);
  • shadowTimer.start();
  • shadowTimer.addEventListener(TimerEvent.TIMER, onShadowFadeOut);
  • myImageBaseWidth = myImage.width;
  • myImageBaseHeight = myImage.height;
  • //listener
  • stage.addEventListener(MouseEvent.MOUSE_UP, onStopMove);
  • myMoveStage.addEventListener(MouseEvent.MOUSE_DOWN, onDragInit);
  • bntResize1.addEventListener(MouseEvent.MOUSE_DOWN, onResize1);
  • bntResize2.addEventListener(MouseEvent.MOUSE_DOWN, onResize2);
  • bntResize3.addEventListener(MouseEvent.MOUSE_DOWN, onResize3);
  • bntResize4.addEventListener(MouseEvent.MOUSE_DOWN, onResize4);
  • bntLuminosity.addEventListener(MouseEvent.MOUSE_DOWN,onLuminosityInit);
  • bntContrast.addEventListener(MouseEvent.MOUSE_DOWN,onContrastInit);
  • bntSaturation.addEventListener(MouseEvent.MOUSE_DOWN,onSaturationInit);
  • bntSave.addEventListener(MouseEvent.CLICK,onSave);
  • bntReset.addEventListener(MouseEvent.CLICK,onReset);
  • bntResize1.visible = true;
  • bntResize2.visible = true;
  • bntResize3.visible = true;
  • bntResize4.visible = true;
  • cursorHandOpen.visible = true;
  • onHandCursorInit();
  • onInitWorkspace();
  • }
  • }
  • /**
  • * FADE-OUT MASK GENERAL
  • **/
  • function onShadowFadeOut(e:Event):void
  • {
  • myAllShadow.alpha = myAllShadow.alpha - 0.1;
  • myBrowser.alpha = myBrowser.alpha - 0.1;
  • if(browser.alpha < 0.01){
  • console.appendText(' > onShadowFadeOut');
  • myAllShadow.visible = false;
  • myBrowser.visible = false;
  • shadowTimer.stop();
  • shadowTimer.removeEventListener(TimerEvent.TIMER, onShadowFadeOut);
  • }
  • }
  • /**
  • * INIT VAR & WORKSPACE
  • **/
  • function onInitWorkspace():void
  • {
  • console.appendText(' > onInitWorkspace');
  • //filters
  • luminosity = 0;
  • contrast = 1;
  • saturation = 1.28;
  • onFilterMove();
  • //positionement de l'image dans l'espace de travail (myMoveStage)
  • myImage.width = myImageBaseWidth;
  • myImage.height = myImageBaseHeight;
  • myImageWidth = myImage.width;
  • myImageHeight = myImage.height;
  • var myImageHeightEchelle:Number = myImage.height * myMoveStage.width / myImage.width;
  • if(myImageHeightEchelle <= myMoveStage.height){
  • myImage.width = myMoveStage.width - myMoveStagePadding * 2;
  • myImage.height = myImage.width * myImageHeight / myImageWidth;
  • }else{
  • myImage.height = myMoveStage.height - myMoveStagePadding * 2;
  • myImage.width = myImage.height * myImageWidth / myImageHeight;
  • }
  • myImage.x = myMoveStage.x + (myMoveStage.width - myImage.width) / 2;
  • myImage.y = myMoveStage.y + (myMoveStage.height - myImage.height) / 2;
  • //positionement des boutons de resize sur l'image, de la saveZone, etc
  • onConstantMove();
  • onInitPosition();
  • }
  • /**
  • * HAND CURSOR OPEN
  • **/
  • function onHandCursorInit():void
  • {
  • cursorTimer.start();
  • cursorTimer.addEventListener(TimerEvent.TIMER, onHandCursorMove);
  • cursorHandOpen.gotoAndStop(1);
  • }
  • function onHandCursorMove(e:TimerEvent):void
  • {
  • if(mouseX > myMoveStage.x && mouseX < myMoveStage.x + myMoveStage.width && mouseY > myMoveStage.y && mouseY < myMoveStage.y + myMoveStage.height
  • && (mouseX < bntResize1.x - bntResize1.width/2 || mouseX > bntResize1.x - bntResize1.width/2 + bntResize1.width || mouseY < bntResize1.y - bntResize1.height/2 || mouseY > bntResize1.y + bntResize1.height - bntResize1.height/2)
  • && (mouseX < bntResize2.x - bntResize2.width/2 || mouseX > bntResize2.x - bntResize2.width/2 + bntResize2.width || mouseY < bntResize2.y - bntResize2.height/2 || mouseY > bntResize2.y + bntResize2.height - bntResize2.height/2)
  • && (mouseX < bntResize3.x - bntResize3.width/2 || mouseX > bntResize3.x - bntResize3.width/2 + bntResize3.width || mouseY < bntResize3.y - bntResize3.height/2 || mouseY > bntResize3.y + bntResize3.height - bntResize3.height/2)
  • && (mouseX < bntResize4.x - bntResize4.width/2 || mouseX > bntResize4.x - bntResize4.width/2 + bntResize4.width || mouseY < bntResize4.y - bntResize4.height/2 || mouseY > bntResize4.y + bntResize4.height - bntResize4.height/2)
  • ){
  • Mouse.hide();
  • cursorHandOpen.visible = true;
  • cursorHandOpen.x = mouseX;
  • cursorHandOpen.y = mouseY;
  • }else{
  • Mouse.show();
  • cursorHandOpen.visible = false;
  • }
  • }
  • function onHandCursorStop():void
  • {
  • Mouse.show();
  • cursorHandOpen.visible = false;
  • cursorTimer.reset();
  • cursorTimer.removeEventListener(TimerEvent.TIMER, onHandCursorMove);
  • }
  • /**
  • * LUMINOSITY
  • **/
  • function onLuminosityInit(e:MouseEvent):void
  • {
  • moveTimer.start();
  • moveTimer.addEventListener(TimerEvent.TIMER, onLuminosityMove);
  • }
  • function onLuminosityMove(e:TimerEvent):void
  • {
  • onBntMove(bntLuminosity, scrollBackLuminosity);
  • luminosity = (bntLuminosity.x - scrollBackLuminosity.x) * 500 / scrollBackLuminosity.width - 255;
  • onFilterMove();
  • }
  • /**
  • * CONTRAST
  • **/
  • function onContrastInit(e:MouseEvent):void
  • {
  • moveTimer.start();
  • moveTimer.addEventListener(TimerEvent.TIMER, onContrastMove);
  • }
  • function onContrastMove(e:TimerEvent):void
  • {
  • onBntMove(bntContrast, scrollBackContrast);
  • contrast = (bntContrast.x - scrollBackContrast.x) * 2 / scrollBackContrast.width;
  • onFilterMove();
  • }
  • /**
  • * SATURATION
  • **/
  • function onSaturationInit(e:MouseEvent):void
  • {
  • moveTimer.start();
  • moveTimer.addEventListener(TimerEvent.TIMER, onSaturationMove);
  • }
  • function onSaturationMove(e:TimerEvent)
  • {
  • onBntMove(bntSaturation, scrollBackSaturation);
  • saturation = (bntSaturation.x - scrollBackSaturation.x) * 255 / scrollBackSaturation.width / 100;
  • onFilterMove();
  • }
  • /**
  • * DRAG
  • **/
  • function onDragInit(e:MouseEvent):void
  • {
  • myImageMouseX = mouseX - myImage.x;
  • myImageMouseY = mouseY - myImage.y;
  • moveTimer.start();
  • moveTimer.addEventListener(TimerEvent.TIMER, onDragMove);
  • }
  • function onDragMove(e:TimerEvent):void
  • {
  • myImage.x = mouseX - myImageMouseX;
  • myImage.y = mouseY - myImageMouseY;
  • if(myImage.x > saveZone.x)
  • myImage.x = saveZone.x;
  • if(myImage.y > saveZone.y)
  • myImage.y = saveZone.y;
  • if(myImage.x + myImage.width < saveZone.x + saveZone.width)
  • myImage.x = saveZone.x + saveZone.width - myImage.width;
  • if(myImage.y + myImage.height < saveZone.y + saveZone.height)
  • myImage.y = saveZone.y + saveZone.height - myImage.height;
  • onConstantMove();
  • }
  • /**
  • * RESIZE
  • **/
  • function onResize1(e:MouseEvent):void
  • {
  • bntResizeHorizontal = 'left';
  • bntResizeVertical = 'top';
  • onResizeInit();
  • }
  • function onResize2(e:MouseEvent):void
  • {
  • bntResizeHorizontal = 'right';
  • bntResizeVertical = 'top';
  • onResizeInit();
  • }
  • function onResize3(e:MouseEvent):void
  • {
  • bntResizeHorizontal = 'right';
  • bntResizeVertical = 'bottom';
  • onResizeInit();
  • }
  • function onResize4(e:MouseEvent):void
  • {
  • bntResizeHorizontal = 'left';
  • bntResizeVertical = 'bottom';
  • onResizeInit();
  • }
  • function onResizeInit():void
  • {
  • onHandCursorStop();
  • myImageX = myImage.x;
  • myImageY = myImage.y;
  • myImageWidth = myImage.width;
  • myImageHeight = myImage.height;
  • moveTimer.start();
  • moveTimer.addEventListener(TimerEvent.TIMER, onResizeMove);
  • }
  • function onResizeMove(e:TimerEvent):void
  • {
  • //Resize par le coin a l'echelle hauteur/largeur
  • /*if(bntResizeHorizontal == 'left'){
  • myImage.width = myImageWidth - (mouseX - myImageX);
  • myImage.x = mouseX;
  • }else{
  • myImage.width = mouseX - myImageX;
  • }
  • if( myImage.x > saveZone.x){
  • myImage.width = myImageX + myImageWidth - saveZone.x;
  • myImage.x = saveZone.x;
  • }
  • if(myImage.width + myImage.x < saveZone.width + saveZone.x)
  • myImage.width = saveZone.width + saveZone.x - myImage.x;
  • myImage.height = myImage.width * myImageHeight / myImageWidth;
  • if(bntResizeVertical == 'top')
  • myImage.y = myImageY + (myImageHeight - myImage.height);
  • if( myImage.y > saveZone.y){
  • myImage.height = myImageY + myImageHeight - saveZone.y;
  • myImage.y = saveZone.y;
  • myImage.width = myImage.height * myImageWidth / myImageHeight;
  • }
  • if(myImage.height + myImage.y < saveZone.height + saveZone.y){
  • myImage.height = saveZone.height + saveZone.y - myImage.y;
  • myImage.width = myImage.height * myImageWidth / myImageHeight;
  • }*/
  • //Resize centré
  • if(bntResizeHorizontal == 'left'){
  • myImage.width = myImageWidth - (mouseX - myImageX)*2;
  • myImage.x = mouseX;
  • }else{
  • myImage.width = myImageWidth - (myImageX + myImageWidth - mouseX)*2;
  • myImage.x = myImageX + (myImageX + myImageWidth - mouseX);
  • }
  • if(bntResizeVertical == 'top'){
  • myImage.height = myImageHeight - (mouseY - myImageY)*2;
  • myImage.y = mouseY;
  • }else{
  • myImage.height = myImageHeight - (myImageY + myImageHeight - mouseY)*2;
  • myImage.y = myImageY + (myImageY + myImageHeight - mouseY);
  • }
  • if( myImage.x > saveZone.x)
  • myImage.x = saveZone.x;
  • if( myImage.y > saveZone.y)
  • myImage.y = saveZone.y;
  • if( myImage.width < saveZone.width)
  • myImage.width = saveZone.width;
  • if( myImage.height < saveZone.height)
  • myImage.height = saveZone.height;
  • onConstantMove();
  • }
  • /**
  • * fonctions constantes
  • **/
  • function onStopMove(e:MouseEvent):void
  • {
  • onHandCursorInit();
  • moveTimer.removeEventListener(TimerEvent.TIMER, onDragMove);
  • moveTimer.removeEventListener(TimerEvent.TIMER, onResizeMove);
  • moveTimer.removeEventListener(TimerEvent.TIMER, onLuminosityMove);
  • moveTimer.removeEventListener(TimerEvent.TIMER, onContrastMove);
  • moveTimer.removeEventListener(TimerEvent.TIMER, onSaturationMove);
  • moveTimer.reset();
  • }
  • function onConstantMove():void
  • {
  • bntResize1.x = myImage.x;
  • bntResize1.y = myImage.y;
  • bntResize2.x = myImage.x + myImage.width;
  • bntResize2.y = myImage.y;
  • bntResize4.x = myImage.x;
  • bntResize4.y = myImage.y + myImage.height;
  • bntResize3.x = myImage.x + myImage.width;
  • bntResize3.y = myImage.y + myImage.height;
  • }
  • function onBntMove(bnt:MovieClip, scrollBack:MovieClip):void
  • {
  • bnt.x = mouseX;
  • if(bnt.x > scrollBack.x + scrollBack.width)
  • bnt.x = scrollBack.x + scrollBack.width;
  • if(bnt.x < scrollBack.x)
  • bnt.x = scrollBack.x
  • }
  • function onFilterMove():void
  • {
  • var Red:Number = (1 - saturation) * 0.212671 * contrast;
  • var Green:Number = (1 - saturation) * 0.715160 * contrast;
  • var Blue:Number = (1 - saturation) * 0.072169 * contrast;
  • var RedMove:Number = Red + saturation * contrast;
  • var GreenMove:Number = Green + saturation * contrast;
  • var BlueMove:Number = Blue + saturation * contrast;
  • var colors:Array = new Array();
  • colors = colors.concat([RedMove, Green, Blue, 0, luminosity]);
  • colors = colors.concat([Red, GreenMove, Blue, 0, luminosity]);
  • colors = colors.concat([Red, Green, BlueMove, 0, luminosity]);
  • colors = colors.concat([0, 0, 0, 1, 0]);
  • var filtre:ColorMatrixFilter = new ColorMatrixFilter(colors);
  • myImage.filters = [filtre];
  • }
  • /**
  • * SAVE
  • **/
  • function onSave(e:Event):void
  • {
  • console.appendText(' > [SAVE]');
  • bntResize1.visible = false;
  • bntResize2.visible = false;
  • bntResize3.visible = false;
  • bntResize4.visible = false;
  • saveZone.visible = false;
  • var bitmapData:BitmapData = new BitmapData(saveZone.width, saveZone.width, false, 0xffffff);
  • var myRectangle:Rectangle = new Rectangle(saveZone.x, saveZone.y, saveZone.width, saveZone.width);
  • var myMatrix:Matrix = new Matrix();
  • myMatrix.translate(-saveZone.x, -saveZone.y);
  • bitmapData.draw(this, myMatrix);
  • var jpgEnc:JPGEncoder = new JPGEncoder(100);
  • var bytes:ByteArray = jpgEnc.encode(bitmapData);
  • //myFileRefSave.save(bytes, "xwcvxwcvwxccv.jpg");
  • var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
  • var scriptRequest:URLRequest = new URLRequest("http://prod2.sideal.com/braceletsBresiliens/flash/jpg.php?name=sketch.jpg");
  • //var scriptLoader:URLLoader = new URLLoader();
  • scriptRequest.requestHeaders.push(header);
  • scriptRequest.method = URLRequestMethod.POST;
  • scriptRequest.data = bytes;
  • //scriptLoader.load(scriptRequest);
  • navigateToURL(scriptRequest);
  • bntResize1.visible = true;
  • bntResize2.visible = true;
  • bntResize3.visible = true;
  • bntResize4.visible = true;
  • saveZone.visible = true;
  • }
  • /**
  • * RESET
  • **/
  • function onReset(e:Event):void
  • {
  • console.appendText(' > [RESET]');
  • onInitWorkspace();
  • }
  • //BEGIN
  • browser.bntBrowser.addEventListener(MouseEvent.MOUSE_DOWN, onBrowser);
  • onInitPosition();
stop();

/**
 * INIT
 **/
 
import com.adobe.images.JPGEncoder;
console.text = '[BEGIN]';

//movieClips
var myImage:MovieClip = container;
var myMoveStage:MovieClip = moveStage;
var myBrowser:MovieClip = browser;
var myAllShadow:MovieClip = allShadow;

//Timer
var moveTimer:Timer = new Timer(40);
var cursorTimer:Timer = new Timer(40);
var shadowTimer:Timer = new Timer(40);

//myImage
var fileRef:FileReference;

var myImageMouseX:Number;
var myImageMouseY:Number;
var myImageX:Number;
var myImageY:Number;
var myImageWidth:Number;
var myImageHeight:Number;
var myImageBaseWidth:Number;
var myImageBaseHeight:Number;

var myMoveStagePadding:Number = 30;

var bntResizeHorizontal:String;
var bntResizeVertical:String;

//filters
var luminosity:Number;
var contrast:Number;
var saturation:Number;

//handCursor on bnt
bntResize1.buttonMode = true;
bntResize2.buttonMode = true;
bntResize3.buttonMode = true;
bntResize4.buttonMode = true;
bntLuminosity.buttonMode = true;
bntContrast.buttonMode = true;
bntSaturation.buttonMode = true;
browser.bntBrowser.buttonMode = true;

bntResize1.visible = false;
bntResize2.visible = false;
bntResize3.visible = false;
bntResize4.visible = false;
cursorHandOpen.visible = false;

/**
 * BNT BROWSE
 **/
function onBrowser(e:MouseEvent):void 
{
	console.appendText(' > onBrowser');
	fileRef = new FileReference();
	fileRef.addEventListener(Event.SELECT, onBrowserSelect);
	var imagesFilter:FileFilter = new FileFilter("Images", "*.jpg;*.jpeg;*.gif;*.png");
	fileRef.browse([imagesFilter]);
}
function onBrowserSelect(e:Event):void 
{
	console.appendText(' > onBrowserSelect');
	e.target.load();
	e.target.addEventListener(Event.COMPLETE, onInitImage);
	fileRef.removeEventListener(Event.SELECT, onBrowserSelect);
	browser.bntBrowser.removeEventListener(MouseEvent.MOUSE_DOWN, onBrowser);
}

/**
 * INIT POSITION DES ELEMENTS
 **/
function onInitPosition():void 
{
	console.appendText(' > onInitPosition');
	//positionnement du cadre de la zone a sauver
	saveZone.x = myMoveStage.x + myMoveStage.width/2 - saveZone.width/2;
	saveZone.y = myMoveStage.y + myMoveStage.height/2 - saveZone.height/2;
	
	//positionnement des boutons sur les scrollBar
	bntLuminosity.x = scrollBackLuminosity.width/2 + scrollBackLuminosity.x;
	bntContrast.x = scrollBackContrast.width/2 + scrollBackContrast.x;
	bntSaturation.x = scrollBackSaturation.width/2 + scrollBackSaturation.x;
	bntLuminosity.y = scrollBackLuminosity.y;
	bntContrast.y = scrollBackContrast.y;
	bntSaturation.y = scrollBackSaturation.y;
}

/**
 * INIT IMAGE
 **/
function onInitImage(e:Event):void 
{
	console.appendText(' > onInitImage');
	var myLoad:Loader = new Loader();
	myLoad.loadBytes(e.target.data);
	myLoad.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadingImageComplete);
	var bmpData:BitmapData;
	var bmp:Bitmap;
	function onLoadingImageComplete(e:Event):void 
	{
		console.appendText(' > onLoadingImageComplete');
		myLoad.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoadingImageComplete);
		
		// Lissage de l'image et affichage
		bmpData = new BitmapData(e.target.content.width, e.target.content.height);
		bmpData.draw(e.target.content);
		bmp = new Bitmap(bmpData, "auto", true);
		myImage.addChild(bmp);
		
		shadowTimer.start();
		shadowTimer.addEventListener(TimerEvent.TIMER, onShadowFadeOut);
		
		myImageBaseWidth = myImage.width;
		myImageBaseHeight = myImage.height;
		//listener
		stage.addEventListener(MouseEvent.MOUSE_UP, onStopMove);
		
		myMoveStage.addEventListener(MouseEvent.MOUSE_DOWN, onDragInit);
		
		bntResize1.addEventListener(MouseEvent.MOUSE_DOWN, onResize1);
		bntResize2.addEventListener(MouseEvent.MOUSE_DOWN, onResize2);
		bntResize3.addEventListener(MouseEvent.MOUSE_DOWN, onResize3);
		bntResize4.addEventListener(MouseEvent.MOUSE_DOWN, onResize4);
		
		bntLuminosity.addEventListener(MouseEvent.MOUSE_DOWN,onLuminosityInit);
		bntContrast.addEventListener(MouseEvent.MOUSE_DOWN,onContrastInit);
		bntSaturation.addEventListener(MouseEvent.MOUSE_DOWN,onSaturationInit);
		
		bntSave.addEventListener(MouseEvent.CLICK,onSave);
		bntReset.addEventListener(MouseEvent.CLICK,onReset);
		
		bntResize1.visible = true;
		bntResize2.visible = true;
		bntResize3.visible = true;
		bntResize4.visible = true;
		cursorHandOpen.visible = true;
		
		onHandCursorInit();
		onInitWorkspace();
	}
}

/**
 * FADE-OUT MASK GENERAL
 **/
function onShadowFadeOut(e:Event):void 
{
	myAllShadow.alpha = myAllShadow.alpha - 0.1;
	myBrowser.alpha = myBrowser.alpha - 0.1;
	
	if(browser.alpha < 0.01){
		console.appendText(' > onShadowFadeOut');
		myAllShadow.visible = false;
		myBrowser.visible = false;
		shadowTimer.stop();
		shadowTimer.removeEventListener(TimerEvent.TIMER, onShadowFadeOut);
	}
}

/**
 * INIT VAR & WORKSPACE
 **/
function onInitWorkspace():void 
{
	console.appendText(' > onInitWorkspace');
	//filters
	luminosity = 0;
	contrast = 1;
	saturation = 1.28;
	onFilterMove();
	
	//positionement de l'image dans l'espace de travail (myMoveStage)
	myImage.width = myImageBaseWidth;
	myImage.height = myImageBaseHeight;
	myImageWidth = myImage.width;
	myImageHeight = myImage.height;
	var myImageHeightEchelle:Number = myImage.height * myMoveStage.width / myImage.width;
	if(myImageHeightEchelle <= myMoveStage.height){
		myImage.width = myMoveStage.width - myMoveStagePadding * 2;
		myImage.height = myImage.width * myImageHeight / myImageWidth;
	}else{
		myImage.height = myMoveStage.height - myMoveStagePadding * 2;
		myImage.width = myImage.height * myImageWidth / myImageHeight;
	}	
	myImage.x = myMoveStage.x + (myMoveStage.width - myImage.width) / 2;
	myImage.y = myMoveStage.y + (myMoveStage.height - myImage.height) / 2;
	
	//positionement des boutons de resize sur l'image, de la saveZone, etc
	onConstantMove();
	onInitPosition();
}

/**
 * HAND CURSOR OPEN
 **/
function onHandCursorInit():void
{	
	cursorTimer.start();
	cursorTimer.addEventListener(TimerEvent.TIMER, onHandCursorMove);
	cursorHandOpen.gotoAndStop(1);
}

function onHandCursorMove(e:TimerEvent):void
{	
	if(mouseX > myMoveStage.x && mouseX < myMoveStage.x + myMoveStage.width && mouseY > myMoveStage.y && mouseY < myMoveStage.y + myMoveStage.height
	  && (mouseX < bntResize1.x - bntResize1.width/2 || mouseX > bntResize1.x - bntResize1.width/2 + bntResize1.width || mouseY < bntResize1.y - bntResize1.height/2 || mouseY > bntResize1.y + bntResize1.height - bntResize1.height/2)
	  && (mouseX < bntResize2.x - bntResize2.width/2 || mouseX > bntResize2.x - bntResize2.width/2 + bntResize2.width || mouseY < bntResize2.y - bntResize2.height/2 || mouseY > bntResize2.y + bntResize2.height - bntResize2.height/2)
	  && (mouseX < bntResize3.x - bntResize3.width/2 || mouseX > bntResize3.x - bntResize3.width/2 + bntResize3.width || mouseY < bntResize3.y - bntResize3.height/2 || mouseY > bntResize3.y + bntResize3.height - bntResize3.height/2)
	  && (mouseX < bntResize4.x - bntResize4.width/2 || mouseX > bntResize4.x - bntResize4.width/2 + bntResize4.width || mouseY < bntResize4.y - bntResize4.height/2 || mouseY > bntResize4.y + bntResize4.height - bntResize4.height/2)
	){
		Mouse.hide();
		cursorHandOpen.visible = true;
		cursorHandOpen.x = mouseX;
		cursorHandOpen.y = mouseY;
	}else{
		Mouse.show();
		cursorHandOpen.visible = false;
	}
}
function onHandCursorStop():void
{	
	Mouse.show();
	cursorHandOpen.visible = false;
	cursorTimer.reset();
	cursorTimer.removeEventListener(TimerEvent.TIMER, onHandCursorMove);
}

/**
 * LUMINOSITY
 **/
function onLuminosityInit(e:MouseEvent):void
{	
	moveTimer.start();
	moveTimer.addEventListener(TimerEvent.TIMER, onLuminosityMove);
}
function onLuminosityMove(e:TimerEvent):void
{
	onBntMove(bntLuminosity, scrollBackLuminosity);
	luminosity = (bntLuminosity.x - scrollBackLuminosity.x) * 500 / scrollBackLuminosity.width - 255;
	onFilterMove();
}

/**
 * CONTRAST
 **/
function onContrastInit(e:MouseEvent):void
{
	moveTimer.start();
	moveTimer.addEventListener(TimerEvent.TIMER, onContrastMove);
}
function onContrastMove(e:TimerEvent):void
{
	onBntMove(bntContrast, scrollBackContrast);
	contrast = (bntContrast.x - scrollBackContrast.x) * 2 / scrollBackContrast.width;
	onFilterMove();
}

/**
 * SATURATION
 **/
function onSaturationInit(e:MouseEvent):void
{	
	moveTimer.start();
	moveTimer.addEventListener(TimerEvent.TIMER, onSaturationMove);
}
function onSaturationMove(e:TimerEvent)
{
	onBntMove(bntSaturation, scrollBackSaturation);
	saturation = (bntSaturation.x - scrollBackSaturation.x) * 255 / scrollBackSaturation.width / 100;
 	onFilterMove();
}

/**
 * DRAG
 **/
function onDragInit(e:MouseEvent):void
{
	myImageMouseX = mouseX - myImage.x;
	myImageMouseY = mouseY - myImage.y;
	moveTimer.start();
	moveTimer.addEventListener(TimerEvent.TIMER, onDragMove);
}
function onDragMove(e:TimerEvent):void
{
	myImage.x = mouseX - myImageMouseX;
	myImage.y = mouseY - myImageMouseY;
	
	if(myImage.x > saveZone.x)
		myImage.x = saveZone.x;
	if(myImage.y > saveZone.y)
		myImage.y = saveZone.y;
	if(myImage.x + myImage.width < saveZone.x + saveZone.width)
		myImage.x = saveZone.x + saveZone.width - myImage.width;
	if(myImage.y + myImage.height < saveZone.y + saveZone.height)
		myImage.y = saveZone.y + saveZone.height - myImage.height;
	
	onConstantMove();
}

/**
 * RESIZE
 **/
function onResize1(e:MouseEvent):void
{
	bntResizeHorizontal = 'left';
	bntResizeVertical = 'top';
	onResizeInit();
}
function onResize2(e:MouseEvent):void
{
	bntResizeHorizontal = 'right';
	bntResizeVertical = 'top';
	onResizeInit();
}
function onResize3(e:MouseEvent):void
{
	bntResizeHorizontal = 'right';
	bntResizeVertical = 'bottom';
	onResizeInit();
}
function onResize4(e:MouseEvent):void
{
	bntResizeHorizontal = 'left';
	bntResizeVertical = 'bottom';
	onResizeInit();
}

function onResizeInit():void
{
	onHandCursorStop();
	myImageX = myImage.x;
	myImageY = myImage.y;
	myImageWidth = myImage.width;
	myImageHeight = myImage.height;
	moveTimer.start();
	moveTimer.addEventListener(TimerEvent.TIMER, onResizeMove);
}

function onResizeMove(e:TimerEvent):void
{
	//Resize par le coin a l'echelle hauteur/largeur
	/*if(bntResizeHorizontal == 'left'){
		myImage.width = myImageWidth - (mouseX - myImageX);
		myImage.x = mouseX;
	}else{
		myImage.width = mouseX - myImageX;
	}
	
	if( myImage.x > saveZone.x){
		myImage.width = myImageX + myImageWidth - saveZone.x;
		myImage.x = saveZone.x;
	}
	if(myImage.width + myImage.x < saveZone.width + saveZone.x)
		myImage.width = saveZone.width + saveZone.x - myImage.x;
	
	myImage.height = myImage.width * myImageHeight / myImageWidth;
	if(bntResizeVertical == 'top')
		myImage.y = myImageY + (myImageHeight - myImage.height);
	
	if( myImage.y > saveZone.y){
		myImage.height = myImageY + myImageHeight - saveZone.y;
		myImage.y = saveZone.y;
		myImage.width = myImage.height * myImageWidth / myImageHeight;
	}
	if(myImage.height + myImage.y < saveZone.height + saveZone.y){
		myImage.height = saveZone.height + saveZone.y - myImage.y;
		myImage.width = myImage.height * myImageWidth / myImageHeight;
	}*/
	
	//Resize centré
	if(bntResizeHorizontal == 'left'){
		myImage.width = myImageWidth - (mouseX - myImageX)*2;
		myImage.x = mouseX;
	}else{
		myImage.width =  myImageWidth - (myImageX + myImageWidth - mouseX)*2;
		myImage.x = myImageX + (myImageX + myImageWidth - mouseX);
	}
	
	if(bntResizeVertical == 'top'){
		myImage.height = myImageHeight - (mouseY - myImageY)*2;
		myImage.y = mouseY;
	}else{
		myImage.height =  myImageHeight - (myImageY + myImageHeight - mouseY)*2;
		myImage.y = myImageY + (myImageY + myImageHeight - mouseY);
	}
		
	if( myImage.x > saveZone.x)
		myImage.x = saveZone.x;
	if( myImage.y > saveZone.y)
		myImage.y = saveZone.y;
	if( myImage.width < saveZone.width)
		myImage.width = saveZone.width;
	if( myImage.height < saveZone.height)
		myImage.height = saveZone.height;
	
	onConstantMove();
}

/**
 * fonctions constantes
 **/
function onStopMove(e:MouseEvent):void
{
	onHandCursorInit();
	moveTimer.removeEventListener(TimerEvent.TIMER, onDragMove);
	moveTimer.removeEventListener(TimerEvent.TIMER, onResizeMove);
	moveTimer.removeEventListener(TimerEvent.TIMER, onLuminosityMove);
	moveTimer.removeEventListener(TimerEvent.TIMER, onContrastMove);
	moveTimer.removeEventListener(TimerEvent.TIMER, onSaturationMove);
	moveTimer.reset();
}
function onConstantMove():void
{
	bntResize1.x = myImage.x;
	bntResize1.y = myImage.y;
	bntResize2.x = myImage.x + myImage.width;
	bntResize2.y = myImage.y;
	bntResize4.x = myImage.x;
	bntResize4.y = myImage.y + myImage.height;
	bntResize3.x = myImage.x + myImage.width;
	bntResize3.y = myImage.y + myImage.height;
}
function onBntMove(bnt:MovieClip, scrollBack:MovieClip):void
{	
	bnt.x = mouseX;
	
	if(bnt.x > scrollBack.x + scrollBack.width)
		bnt.x = scrollBack.x + scrollBack.width;
		
	if(bnt.x < scrollBack.x)
		bnt.x = scrollBack.x
}
function onFilterMove():void
{
	var Red:Number = (1 - saturation) * 0.212671 * contrast;
	var Green:Number = (1 - saturation) * 0.715160 * contrast;
	var Blue:Number = (1 - saturation) * 0.072169 * contrast;
	var RedMove:Number = Red + saturation * contrast;
	var GreenMove:Number = Green + saturation * contrast;
	var BlueMove:Number = Blue + saturation * contrast;
	
	var colors:Array = new Array();
	colors = colors.concat([RedMove, Green, Blue, 0, luminosity]);
	colors = colors.concat([Red, GreenMove, Blue, 0, luminosity]);
	colors = colors.concat([Red, Green, BlueMove, 0, luminosity]);
	colors = colors.concat([0, 0, 0, 1, 0]);
	
	var filtre:ColorMatrixFilter = new ColorMatrixFilter(colors);
	myImage.filters = [filtre];
}

/**
 * SAVE
 **/
function onSave(e:Event):void 
{
	console.appendText(' > [SAVE]');
	bntResize1.visible = false;
	bntResize2.visible = false;
	bntResize3.visible = false;
	bntResize4.visible = false;
	saveZone.visible = false;
	
	var bitmapData:BitmapData = new BitmapData(saveZone.width, saveZone.width, false, 0xffffff);
	var myRectangle:Rectangle = new Rectangle(saveZone.x, saveZone.y, saveZone.width, saveZone.width);
	
	var myMatrix:Matrix = new Matrix();
	myMatrix.translate(-saveZone.x, -saveZone.y);
	
	bitmapData.draw(this, myMatrix);
	
	var jpgEnc:JPGEncoder = new JPGEncoder(100);
	var bytes:ByteArray = jpgEnc.encode(bitmapData);
	//myFileRefSave.save(bytes, "xwcvxwcvwxccv.jpg");
	
	var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
	var scriptRequest:URLRequest = new URLRequest("http://prod2.sideal.com/braceletsBresiliens/flash/jpg.php?name=sketch.jpg");
	//var scriptLoader:URLLoader = new URLLoader();
	
	scriptRequest.requestHeaders.push(header);
	scriptRequest.method = URLRequestMethod.POST;
	scriptRequest.data = bytes;
	 
	//scriptLoader.load(scriptRequest);
	navigateToURL(scriptRequest);
	
	bntResize1.visible = true;
	bntResize2.visible = true;
	bntResize3.visible = true;
	bntResize4.visible = true;
	saveZone.visible = true;
}

/**
 * RESET
 **/
function onReset(e:Event):void 
{
	console.appendText(' > [RESET]');
	onInitWorkspace();
}

//BEGIN
browser.bntBrowser.addEventListener(MouseEvent.MOUSE_DOWN, onBrowser);
onInitPosition();


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

19 avril 2010 12:00:43 :
Ajout du filtre pour restreindre upload (jpg, gif, png) et resize par le centre.

 Sources de la même categorie

Source avec Zip Source avec une capture OUVRIR UNE ANIMATION EXTERNE DANS UN CLIP VIDE. par KcHeY
Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar

Commentaires et avis

Commentaire de pegase31 le 08/04/2010 20:06:40 administrateur CS

Bonjour

Intéressant, mais :

- tu ne restreins pas les types lors du chargement des images, du coup, l'utilisateur peur charger n'importe quoi .. et du coup ça bloque le truc sans permettre d'alternatives...
- Manipuler un coin de l'image pour faire un redimensionnement ne doivent pas déplacer les autres coins, on ne veut pas déplacer l'image ...
- Il faut bloquer le redimensionnement de l'animation, car ça fausse le rendu final de ton avatar.

Un truc à savoir : Flash gère l'interpolation de pixels pour les ratios supérieurs à 1, mais pas pour les rations inférieurs. Du coup, la réduction d'images avec flash donne un rendu "au plus proche". Même avec Matrix ...

Peg'

Commentaire de smoochy le 09/04/2010 10:16:47

hello,

pas encore regardé attentivement le code donc pas de note, mais c'est trop rare ces derniers temps d'avoir une source bien finie (c'est à dire avec un code propre, fonctionnel et une design soigné) pour ne pas le signaler :-)

sinon c'est vrai qu'un redimensionnement centré pour éviter de déplacer l'image serait bien...

Merci pour cette source

++

Commentaire de gremlins7 le 09/04/2010 14:39:10

Salut,
pareil, j'ai pas eu le temps de mater le code. Mais je suis content car ça y est, enfin une source correcte depuis des mois.

Merci pour le code
A+

Commentaire de pegase31 le 11/04/2010 10:19:22 administrateur CS

ah, encore une chose :

Ton script ne permet pas de faire des "retouches", mais un "Recadrage", "redimensionnement" et un "correction colorimétrique".
Pour faire de la "retouche" il aurait fallu que tu permettes de modifier les pixels un par un et non en global.

Peg'

Commentaire de Orange73 le 12/04/2010 17:29:31

Salut,
Et pourquoi ne pas en faire une Classe pour permettre une plus grande ré-utilisabilité du code ainsi qu'une possibilité d'évolution ?

Commentaire de top30 le 13/04/2010 19:29:44

Ou peut voir la source tourner ?
Elle est en CS4, et je ne souhaite pas m'y mettre...

Merci...

Commentaire de pegase31 le 13/04/2010 19:38:13 administrateur CS

Top30 : il suffit de cliquer sur "avatarMaker.swf" dans la liste pour al voir tourner ;)

Peg'
Admin Codes-Sources

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales