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 / Exemple :
stop();
/**
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;
/**
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;
}
/**
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();
}
}
/**
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);
}
}
/**
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();
}
/**
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);
}
/**
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();
}
/**
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();
}
/**
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();
}
/**
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();
}
/**
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();
}
/**
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];
}
/**
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;
}
/**
function onReset(e:Event):void
{
console.appendText(' > [RESET]');
onInitWorkspace();
}
//BEGIN
browser.bntBrowser.addEventListener(MouseEvent.MOUSE_DOWN, onBrowser);
onInitPosition();
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.