0
import flash.display.*;
0
+ import flash.system.LoaderContext;
0
import flash.net.URLRequest;
0
import flash.geom.Point;
0
import flash.filters.ColorMatrixFilter;
0
@@ -8,41 +9,104 @@ package {
0
[SWF(frameRate=24, background=0x000000)]
0
public class Histogram extends Sprite {
0
+ private var redFilter:ColorMatrixFilter = new ColorMatrixFilter([
0
+ private var greenFilter:ColorMatrixFilter = new ColorMatrixFilter([
0
+ private var blueFilter:ColorMatrixFilter = new ColorMatrixFilter([
0
public function Histogram () {
0
stage.align = StageAlign.TOP_LEFT;
0
stage.scaleMode = StageScaleMode.NO_SCALE;
0
- graphics.beginFill(0x
ffffff);
0
+ graphics.beginFill(0x
000000);
0
graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
0
- var s:Sprite = new Sprite();
0
- s.scaleX = stage.stageWidth / 0x100;
0
- s.scaleY = stage.stageHeight / 100;
0
+// s.scaleX = stage.stageWidth / 0x100;
0
+// s.scaleY = stage.stageHeight / 100;
0
+ var url:String = loaderInfo.parameters['url'];
0
+ // url ="http://localhost/tmp/hist/2425207410_03b24e57b9.jpg";
0
+ // url = "http://farm4.static.flickr.com/3048/2425207410_03b24e57b9.jpg";
0
var loader:Loader = new Loader();
0
- var req:URLRequest = new URLRequest(loaderInfo.parameters['url']);
0
- loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event:Event):void {
0
- var loader:Loader = Loader(event.target.loader);
0
+ var req:URLRequest = new URLRequest(url);
0
+ loader.contentLoaderInfo.addEventListener(Event.COMPLETE, drawHistograms);
0
+ loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (e:Event):void {
0
+ var context:LoaderContext = new LoaderContext();
0
+ context.checkPolicyFile = true;
0
+ loader.load(req, context);
0
+ private function drawHistograms (e:Event):void {
0
+ var loader:Loader = Loader(e.target.loader);
0
var image:Bitmap = Bitmap(loader.content);
0
- createHistogram(image.bitmapData, s);
0
+ for (var i:uint = 0; i < cmfs.length; i++) {
0
+ var s:Sprite = new Sprite();
0
+ drawRect(0, 0, 0x100, 100);
0
+ s.graphics.lineStyle(1, cmfs[i].color);
0
+ createHistogram(image.bitmapData, s, cmfs[i].filter);
0
+ drawRect(0, 0, 0x100, 100);
0
// http://d.hatena.ne.jp/nitoyon/20071009/as3_histogram1
0
- private function createHistogram(bmd:BitmapData, s:Sprite):void {
0
- var cmf:ColorMatrixFilter = new ColorMatrixFilter(
0
- 1 / 3, 1 / 3, 1 / 3, 0, 0,
0
- 1 / 3, 1 / 3, 1 / 3, 0, 0,
0
- 1 / 3, 1 / 3, 1 / 3, 0, 0
0
+ private function createHistogram(bmd:BitmapData, s:Sprite, cmf:ColorMatrixFilter):void {
0
var bmd2:BitmapData = bmd.clone();
0
bmd2.applyFilter(bmd2, bmd2.rect, new Point(), cmf);
0
@@ -55,10 +119,10 @@ package {
0
var max:int = bmd.width * bmd.height / 50;
0
-
s.graphics.lineStyle(1);
0
+
var g:Graphics = s.graphics;
0
for (i = 0; i < 0x100; i++) {
0
- s.graphics.moveTo(i, 100);
0
- s.graphics.lineTo(i, Math.max(0, 100 - values[i] / max * 100));
0
+ g.lineTo(i, Math.max(0, 100 - values[i] / max * 100));
Comments
No one has commented yet.