たまには技術的なこと書かないといかんですね。というわけでちょろっとAIRを触っています。
画像のURLを使わずにその画像を保存する方法が無いもんかなと考えて、HTML読み込んで画像の部分だけBitmapDataにdrawしたらいいやん、ということでやってみました。
HTMLLoaderで取得したHTMLから保存したい画像をDOMで取得して、画像の位置と大きさでクリップしてBitmapDataにdrawします。
別にhtmlから画像のURL抜き出して、Loaderで読み込めばいいんですが、、再度画像を読みに行かなくて済むので、こっちのほうがサーバーに優しいですね。あまり使い道ないと思うけど。
HTMLLoaderで取得したHTMLから保存したい画像をDOMで取得して、画像の位置と大きさでクリップしてBitmapDataにdrawします。
var h:HTMLLoader = new HTMLLoader();
h.load(new URLRequest("http://un-q.net")); // HTMLを読み込む
h.width = 800;
h.height = 1500;
h.visible = true;
h.addEventListener(Event.COMPLETE, function(e:Event):void {
var img:Object = h.window.document.images;
var mtx:Matrix = new Matrix();
// 仮にimg[0]が取得したい画像だとして
mtx.translate(-img[0].x, -img[0].y);
var rect:Rectangle = new Rectangle(0, 0, img[0].width, img[0].height);
b.draw(h, mtx, null, null, rect);
// あとはBitmapDataをjpgかなんかにエンコードして保存したらええと思います。
});
別にhtmlから画像のURL抜き出して、Loaderで読み込めばいいんですが、、再度画像を読みに行かなくて済むので、こっちのほうがサーバーに優しいですね。あまり使い道ないと思うけど。
![Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編]](http://ecx.images-amazon.com/images/I/617sNhK9P9L._SL160_.jpg)




コメント (2)
それじゃ、可視部分しかdrawできないよね。
投稿者: amp | 2010年05月11日 07:59
日時: 2010年05月11日 07:59
>amp
たしかにそうですねー。
imgタグ取得して強制的に表示させてからdrawするとかしたらいけますかねー
投稿者: 匿名 | 2010年05月11日 10:06
日時: 2010年05月11日 10:06