2007年10月04日
ActionScriptで昭和写真化
基礎的な内容が続いてきたので、たまには応用例を。
最近、昭和の写真ジェネレータ(仮) が話題になりましたが、これの作り方が公開されています。
ならば、ActionScript 3.0 でやってみたくなるのが人情です。
いい具合ですね。ザ・昭和。
サーバー側の資源を使わずにこういうことができちゃうのは素敵じゃないでしょうか。
Flickr は crossdomain.xml を設置している ので、その辺と連携する ActionScript を書いてみても面白そうですね。
ソースは以下に(52行)。
package { import flash.display.*; import flash.geom.*; import flash.filters.*; import flash.text.*; public class ShowaPhoto extends Sprite { [Embed(source="photo3.jpg")] private var SamplePic:Class; [Embed(fontName="7barSPBd", source="7barSPBd.TTF")] private var SevenBarFont:Class; public function ShowaPhoto() { var bmp:Bitmap = new SamplePic(); var bmd:BitmapData = bmp.bitmapData; // color transform var colorTrans:ColorTransform = new ColorTransform(0.7, 0.7, 0.7, 0x44, 0x33, 0x22); bmd.colorTransform(bmd.rect, colorTrans); bmd.applyFilter(bmd, bmd.rect, new Point(), new BlurFilter(0.2, 0.2)); // add letter var t:TextField = new TextField(); var tf:TextFormat = new TextFormat(); tf.size = 18; tf.font = "7barSPBd"; tf.color = 0xffaa33; t.defaultTextFormat = tf; t.embedFonts = true; t.text = "78 09 21"; var matrix:Matrix = new Matrix(); matrix.translate(bmd.width - t.textWidth - 10, bmd.height - t.textHeight - 5); bmd.draw(t, matrix); // add border var bmd2:BitmapData = new BitmapData(bmd.width + 10, bmd.height + 10, false); bmd2.fillRect(bmd2.rect, 0xffeedd); matrix.identity(); matrix.translate(5, 5); bmd2.draw(bmd, matrix); // add noise var bmdNoise:BitmapData = new BitmapData(bmd2.width, bmd2.height, false); bmdNoise.noise(0, 0xee, 0xff, 7, true); bmd2.draw(bmdNoise, null, null, "multiply"); // display addChild(new Bitmap(bmd2)).filters = [new DropShadowFilter(4, 45, 45, 0.3)]; } } }