Rough Printed click stage to select your image. Test_Dept forked:4favorite:27lines:158license : MIT License modified : 2010-03-18 23:59:25 Embed Tweet // // click stage to select your image. // package { import flash.display.Sprite; /** * RoughPrinted * @author Test Dept */ [SWF(backgroundColor="#ffffff", width="465", height="465")] public class RoughPrinted extends Sprite { public function RoughPrinted() { addChild(new RoughPrintedImpl() ); } } } import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMode; import flash.display.DisplayObject; import flash.display.Graphics; import flash.display.Loader; import flash.display.LoaderInfo; import flash.display.Sprite; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Point; import flash.geom.Rectangle; import flash.events.Event; import flash.events.MouseEvent; import flash.net.FileFilter; import flash.net.FileReference; import flash.net.URLRequest; import flash.system.LoaderContext; class RoughPrintedImpl extends Sprite { private var _fileRef : FileReference; public function RoughPrintedImpl() { addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); } private function addedToStageHandler(event : Event) : void { var url : String = "http://assets.wonderfl.net/images/related_images/8/83/8305/8305445b4e41f37856f0c9d0751937e30e21c496m"; var loader : Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler); loader.load(new URLRequest(url), new LoaderContext(true) ); stage.addEventListener(MouseEvent.MOUSE_DOWN, stage_mouseDownHandler); } private function loader_completeHandler(event : Event) : void { var loaderInfo : LoaderInfo = event.target as LoaderInfo; var bmp : Bitmap = loaderInfo.content as Bitmap; var dstBmp : BitmapData = Util.createPrintedIndirect( bmp, stage.stageWidth, stage.stageHeight, 8, 0xf0f0f0, 0.8); while (numChildren > 0) { removeChildAt(numChildren - 1); } addChild(new Bitmap(dstBmp) ); } private function stage_mouseDownHandler(event : MouseEvent) : void { _fileRef = new FileReference(); _fileRef.browse([ new FileFilter("Image Files", "*.jpg;*.png"), new FileFilter("All Files", "*.*"), ]); _fileRef.addEventListener(Event.SELECT, _fileRef_selectHandler); } private function _fileRef_selectHandler(event : Event) : void { _fileRef.load(); _fileRef.addEventListener(Event.COMPLETE, _fileRef_load_completeHandler); } private function _fileRef_load_completeHandler(event : Event) : void { var loader : Loader = new Loader(); loader.loadBytes(_fileRef.data); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_completeHandler); } } class Util { public static function createPrintedIndirect( src : DisplayObject, width : int, height : int, dotSize : Number, paperColor : uint = 0xffffff, vivid : Number = 1 ) : BitmapData { var srcBmp : BitmapData = new BitmapData(width, height); var scale : Number = (src.width / src.height > width / height)? height / src.height : width / src.width; var mat : Matrix = new Matrix( scale, 0, 0, scale, (width - scale * src.width) / 2, (height - scale * src.height) / 2); srcBmp.draw(src, mat); return createPrinted(srcBmp, dotSize, paperColor, vivid); } public static function createPrinted( srcBmp : BitmapData, dotSize : Number, paperColor : uint = 0xffffff, vivid : Number = 1 ) : BitmapData { var dstBmp : BitmapData = new BitmapData( srcBmp.width, srcBmp.height, false, paperColor); var ct : ColorTransform = new ColorTransform(vivid, vivid, vivid); // Y dstBmp.draw(createHalftone(srcBmp, dotSize, 0xff, 0), null, ct, BlendMode.SUBTRACT); // M dstBmp.draw(createHalftone(srcBmp, dotSize, 0xff << 8, 15), null, ct, BlendMode.SUBTRACT); // C dstBmp.draw(createHalftone(srcBmp, dotSize, 0xff << 16, 30), null, ct, BlendMode.SUBTRACT); return dstBmp; } public static function createHalftone( srcBmp : BitmapData, dotSize : Number, mask : int, angle : Number ) : BitmapData { var color : uint = 0xff000000 | mask; //-------------------- // base var dstBmp : BitmapData = new BitmapData( srcBmp.width, srcBmp.height, false, 0); dstBmp.threshold(srcBmp, new Rectangle(0, 0, srcBmp.width, srcBmp.height), new Point(0, 0), "<=", mask >>> 1, color, mask); //-------------------- // create pattern var pattern : Sprite = new Sprite(); var g : Graphics = pattern.graphics; g.clear(); createPattern(dstBmp.width, dstBmp.height, dotSize, angle * Math.PI / 180, function(x : Number, y : Number) : void { var s : Number = (mask & srcBmp.getPixel(x, y) ) / mask; var rev : Boolean = false; if (s > 0.5) { s = 1.0 - s; rev = true; } var r : Number = Math.sqrt(s * dotSize * dotSize / Math.PI); g.beginFill(rev? color : 0); g.drawCircle(x, y, r); g.endFill(); } ); dstBmp.draw(pattern); return dstBmp; } private static function createPattern( width : Number, height : Number, dotPitch : Number, angle : Number, handler : Function ) : void { if (angle < 0 || angle >= Math.PI / 2) { throw new Error("bad angle:" + angle); } var mat : Matrix = new Matrix(); mat.rotate(angle); var numDots : int = Math.max(width / dotPitch, height / dotPitch); var dx : Point = mat.transformPoint(new Point(dotPitch, 0) ); for (var iy : int = -numDots; iy < numDots; iy++) { var p : Point = mat.transformPoint(new Point(0, iy * dotPitch) ); while (p.x < 0) { p = p.add(dx); } while (p.x < width && p.y < height) { handler(p.x, p.y); p = p.add(dx); } } } } Code Fullscreen Preview Fullscreen kevinlin szisoq rogerluiz jlbadrian Louis2009 alwAYs ffffine ibu4gin uly Joker FTMSuperfly 178ep3 tkinjo nki2 miniapp ngtn moringo2 matacat shevchenko hacker_rs10v.. : rough printed bitmap effect ahchang : 画像フィルタ hacker_xdv5g.. : BetweenAS3 takaki8 : BitmapDataeffectfilter sixgraphica : halftoneimage画像フィルタ nitoyon : effectgeneratorハーフトーン画像生成 novita001 : halftone Sharakusai : ハーフトーン処理 BetweenAS3 BitmapData effect filter generator halftone image 画像フィルタ width height MouseEvent.ADDED_TO_STAGE Math.max url addEventListener addChild String Sprite int sort new page view favorite forked pv93 forked from: Rough Printed simon4761 forked:0 favorite:0lines:158 (diff:1) pv271 forked from: Rough Printed saku_K forked:0 favorite:3lines:158 (diff:1) pv129 forked from: Rough Printed rickyhk forked:0 favorite:3lines:158 (diff:1) pv211 forked from: Rough Printed hacker_rs10vazy forked:0 favorite:1lines:158 (diff:3)