У меня есть приложение которое убирает красные глаза с загружаемой фотографии,
помогите сделать так, что бы это изображение можно было приближать и отдалять, при помощи слайдера, что бы
появлялись полосы прокрутки !!!
Вот код
Код:
<?xml version="1.0" encoding="utf-8"?>
<!-- Simple example to demonstrate Form layout container. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:ns1="com.flasher.*"
width="1200" height="850"
creationComplete="init_app()"
viewSourceURL="srcview/index.html"
xmlns:ui="com.gnstudio.nabiro.ui.*" layout="absolute">
<mx:Script>
<![CDATA[
import flash.net.navigateToURL;
import com.gnstudio.nabiro.ui.images.RedEyeRemover;
import com.gnstudio.nabiro.ui.images.Highliter;
import mx.graphics.codec.PNGEncoder;
import com.gnstudio.nabiro.ui.images.utils.RedEyeImageData;
import flash.display.*;
import flash.net.*;
import flash.events.*;
import flash.utils.*;
import flash.net.*;
import flash.geom.*;
import mx.core.*;
import mx.controls.*;
import flash.display.Loader;
private var fBrowser:FileReference;
private var fFilter:FileFilter;
private var uic01:UIComponent;
private var uic02:UIComponent;
private var loader:Loader;
private var highliter:Highliter;
private var originalImageData:ByteArray; // raw pixels in original image
private var originalImage:ByteArray; // original image encoded as PNG
private var bmpSelection:Bitmap;
internal function init_app():void {
fFilter = new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png");
fBrowser = new FileReference();
fBrowser.addEventListener(Event.SELECT, onFileSelect);
fBrowser.addEventListener(Event.COMPLETE, onFileComplete);
loader = new Loader();
highliter = new Highliter(loader);
uic01 = new UIComponent();
uic01.width = imgSpiral.width;
uic01.height = imgSpiral.height;
uic01.addChild(loader);
uic01.addChild(highliter);
bmpSelection = new Bitmap();
uic02 = new UIComponent();
uic02.addChild(bmpSelection);
imgSpiral.addChild(uic01);
}
internal function browse_for_image(evt:MouseEvent):void {
fBrowser.browse(new Array(fFilter));
}
internal function onFileSelect(evt:Event):void {
fBrowser.load();
}
internal function onFileComplete(evt:Event):void {
if(!loader.hasEventListener(Event.COMPLETE)) {
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderComplete);
}
loader.loadBytes(fBrowser.data);
btApplyFX.enabled = true;
}
internal function onLoaderComplete(evt:Event):void {
var bd:BitmapData = new BitmapData(loader.width, loader.height);
bd.draw(loader);
originalImageData = bd.getPixels(new Rectangle(0, 0, loader.width, loader.height));
originalImageData.position = 0;
var png:PNGEncoder = new PNGEncoder();
originalImage = png.encodeByteArray(originalImageData, loader.width, loader.height, true);
originalImage.position = 0;
}
internal function applyFX(evt:MouseEvent):void {
if(loader.contentLoaderInfo.hasEventListener(Event.COMPLETE))
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoaderComplete);
var rect:Rectangle = highliter.rectangleSnap;
var bd:BitmapData = new BitmapData(loader.width, loader.height);
bd.draw(loader);
var bdSelection:BitmapData = new BitmapData(rect.width, rect.height);
var m:Matrix = new Matrix(1,0,0,1, -rect.x, -rect.y);
var snapRect:Rectangle = new Rectangle(0, 0, rect.width, rect.height);
bdSelection.draw(loader, m, null, null, snapRect, true);
bdSelection.copyChannel(highliter.bitmapData, snapRect, new Point(0, 0), BitmapDataChannel.ALPHA, BitmapDataChannel.ALPHA);
var ba:ByteArray = bdSelection.getPixels(snapRect);
var reid:RedEyeImageData = new RedEyeImageData(ba, rect.width, rect.height);
var adjustedBA:ByteArray = RedEyeRemover.remove_red(reid);
bmpSelection = new Bitmap(bdSelection);
bdSelection.setPixels(snapRect, adjustedBA);
uic02.removeChildAt(0);
uic02.addChild(bmpSelection);
adjustedBA.position = 0;
var fakeAlpha:BitmapData = new BitmapData(rect.width, rect.height);
fakeAlpha.floodFill(0, 0, 0xFFFFFFFF);
bd.copyPixels(bdSelection, snapRect, new Point(rect.x, rect.y), fakeAlpha, null, true);
var newBA:ByteArray = bd.getPixels(new Rectangle(0, 0, loader.width, loader.height));
var png:PNGEncoder = new PNGEncoder();
var pngBA:ByteArray = png.encodeByteArray(newBA, loader.width, loader.height, true);
loader.loadBytes(pngBA);
highliter.clear();
}
]]>
</mx:Script>
<mx:Panel title="Image" height="513" width="625"
paddingTop="10" paddingLeft="10" paddingRight="10" paddingBottom="10" x="108">
<mx:HBox>
<mx:Canvas width="600" height="300" id="imgSpiral">
</mx:Canvas>
</mx:HBox>
<mx:Button id="btLoadImage"
label="browse"
click="browse_for_image(event)"/>
<mx:Button id="btApplyFX"
enabled="false"
label="Red eye"
click="applyFX(event)"/>
</mx:Panel>
</mx:Application>