INTEROP Tokyo 2009
昨日の昼から同期と一緒にぞろぞろと行ってきました。(仕事で;)
Web関連技術の話など
FlashPlayer 10からはデバイスフォントの回転ができるようになりましたが、 TextFieldとTextLineで挙動が違うようです。 一応こちらでもテストしてみました。 上段がTextField、下段がTextLineを使ってテキストを回転表示させています。 >> TextRotate.swf 拡大表示するとよく分かりますが、TextFieldのrotationZを使った場合は、 テキストをビットマップにしてから回転させてます。 一方、TextLineのrotationを使った場合は…
昨日に引き続き画像処理手法の簡単な紹介。 このフィルタは画素値を周りに拡散させます。 Photoshopの [フィルタ] > [表現技法] > [拡散]と同じ効果です。 実際の処理は参照する座標値をランダムに決めているだけ。 ・ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
package { import __AS3__.vec.Vector; import flash.display.*; [SWF(width = "600", height = "250", backgroundColor = "#000000", frameRate = "30")] public class Jitter extends Sprite{ [Embed(source = 'assets/picture.jpg')] public var SrcImg:Class; private var src:Bitmap; private var dst:Bitmap; private var srcData:Vector.<uint>; private var w:int; private var h:int; public function Jitter() { stage.scaleMode = "noScale"; src = new SrcImg() as Bitmap; w = src.width; h = src.height; dst = new Bitmap(new BitmapData(w, h, false)); addChild(src); srcData = new Vector.<uint>(w*h, true); srcData = src.bitmapData.getVector(src.bitmapData.rect); dst.bitmapData.setVector(dst.bitmapData.rect, filterJitter(srcData, 10)); addChild(dst).x += w; } private function filterJitter(src:Vector.<uint>, amount:int):Vector.<uint> { var dst:Vector.<uint> = new Vector.<uint>(w*h, true); var nx:int, ny:int; for (var y:int=0;y<h;y++) { for (var x:int=0;x<w;x++) { nx = x + (Math.random() - 0.5)*amount; ny = y + (Math.random() - 0.5)*amount; try { dst[w*y + x] = src[w*ny + nx]; }catch(e:RangeError) { dst[w*y + x] = src[w*y + x]; }catch(e:ReferenceError) { dst[w*y + x] = src[w*y + x]; } } } return dst; } } } |
・関連記事 Symmetric Nearest Neighbour
すこし落ち着いてきたので久しぶりにFlashを。 今回はSymmetric Nearest Neighbor (SNN)という手法を画像に適用します。 シンメトリック ニアレスト ネイバー。訳すと対称最近傍法。 画素値の差の絶対値を “距離” として、その距離が近い画素の値を選んでいきます。 対称としているのは注目画素に対して対称方向の位置にある2つの画素を参照するからです。 つまり、 1 2 3 4 5 6 7 8 9 とあって5が注目画素なら、1と9、2と8、3と7、…
>> Histogram.swf (要 FlashPlayer 10 & Webカメラ) 昨日はFlashPlayer 10で追加されたBitmapDataクラスのメソッドである get/setVector() を紹介しましたが、 今日は histogram() というメソッドを使ってみます。 以下、livedocsより histogram() メソッド public function histogram(hRect:Rectangle = null):Vector.<Vecto…
FlashPlayer 10ではBitmapDataクラスのメソッドとして get/setVector() が追加されています。 これらのメソッドを使えばピクセルデータを一次元のVectorで扱えますが、 getPixels()/setPixels() も同じようなメソッドだよな、、と思ってリファレンスで見比べてみると、 getPixels(rect:Rectangle):ByteArray ピクセルデータの矩形領域からバイト配列を生成します。 getVector(rect:Rectangle)…
>> NightVision.swf (要 Flash Player 10 & Webカメラ、負荷が高めなので注意してください) PhotoshopによるナイトビジョンエフェクトをFlashで再現。 赤外線暗視ゴーグルをかけた時に見られるような画像に加工します。 PhotoshopのNightVisionプラグインは以下のサイトで無料配布されています。 VanDerLee – Home / Plug-ins / NightVision – Add realist…
基本的にはFlexBuilderを使っているんですが、検証用の簡単なコードを書くときはFlashDevelopを使っています。 それで今日おもむろにバージョンを上げてみたんですが、やっぱりいろいろ変わってますね。 で、エディタのフォントを変更しようと思って ScintillaNET.xml をいじろうと思ったんですが、 フォントを指定しているところがない!? あれ? [Tools] -> [Syntax Coloring] でテキストの色だけでなくフォントの指定もできました。 よかったよかった。