トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     読み込んだ画像を矩形で範囲指定してBitmapData.draw()で複製したい
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
zackle
Åê¹ÆNo.31362
投稿日時: 2007-1-15 20:15
半人前
居住地: 東京
投稿: 36
使用環境:
OS:WinXP&Mac10.4
Ver:Flash8,9 Flex2
Tool:FlashDevelop,FlexBuilder2
Web:Func09
Re: 読み込んだ画像を矩形で範囲指定してBitmapData.draw()で複製したい
ただ複製(draw())するだけだと、画像のサイズ等が違ってしまうので、

切り抜き後のビットマップを受ける、新しいビットマップデータを
切り抜き後のサイズで作成し、そこにRectangleでサイズをMatrixで位置を調整しつつ、draw()する。という感じですね。

画像を切り抜きつつ、新しいビットマップデータを作る関数を作ってみました。



import flash.display.*;
import flash.geom.*;

//	オリジナルのビットマップ
//	ライブラリにID:photoがあるとする
var originalBmp:BitmapData = BitmapData.loadBitmap('photo');

//	切り抜き関数を使って、新しいビットマップを作る
var clippedBmp:BitmapData = clipBitmap( originalBmp, 120, 120, 200, 200 );

//	クリップ後のビットマップを配置
attachBitmap( clippedBmp, 1 );

//	一応オリジナル画像をメモリから解放
originalBmp.dispose();

/**
 * ビットマップをクリッピングして新しいビットマップを作る
 * @param source BitmapData オリジナルのビットマップ
 * @param x Number 切り抜きX座標
 * @param y Number 切り抜きY座標
 * @param w Number 切り抜き横幅
 * @param h Number 切り抜き縦幅
 * @return BitmapData 切り抜かれた後のビットマップデータ
 */
function clipBitmap( source:BitmapData, x:Number, y:Number, w:Number, h:Number ):BitmapData {
	//	切り抜き用の矩形
	var clipRect:Rectangle = new Rectangle( 0, 0, w, h );
	//	切り抜き位置調整用のマトリックス
	var clipMatrix:Matrix = new Matrix();
	//	切り抜き位置をマイナスにずらす
	clipMatrix.translate( -x, -y );
	//	切り抜き後のビットマップデータ
	var clipBmp:BitmapData = new BitmapData( w, h );
	//	オリジナル画像をクリッピング情報を元にdraw()
	clipBmp.draw( source, clipMatrix, new ColorTransform(), null, clipRect );
	return clipBmp;
}




こんな感じです。
moto818
Åê¹ÆNo.31360
投稿日時: 2007-1-15 19:33
新米
居住地:
投稿: 2
使用環境:
OS:WinXP Home SP2
Flash8 Professional
Re: 読み込んだ画像を矩形で範囲指定してBitmapData.draw()で複製したい
zackleさんありがとうございます。
矩形クリッピングができました。

このRectangleでクリッピングした範囲のBitmapDataを取ることは出来るのでしょうか?
画像トリミングのようなカタチでこの範囲のBitmapを作成したいのですが。
難しいでしょうか?
zackle
Åê¹ÆNo.31353
投稿日時: 2007-1-15 15:46
半人前
居住地: 東京
投稿: 36
使用環境:
OS:WinXP&Mac10.4
Ver:Flash8,9 Flex2
Tool:FlashDevelop,FlexBuilder2
Web:Func09
Re: 読み込んだ画像を矩形で範囲指定してBitmapData.draw()で複製したい
http://livedocs.macromedia.com/flash/8_jp/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001950.html

BitmapData.draw()の引数で
Rectangleを渡せば、矩形でクリッピングできます。
moto818
Åê¹ÆNo.31350
投稿日時: 2007-1-15 15:05
新米
居住地:
投稿: 2
使用環境:
OS:WinXP Home SP2
Flash8 Professional
読み込んだ画像を矩形で範囲指定してBitmapData.draw()で複製したい
『画像を読み込んでBitmapData.draw()で複製する』というモノは出来たのですが
指定範囲の画像の一部を切り取って複製したいと考えています。

範囲指定の方法はドラッグで点滅マーキーなどでの指定がベストですが
固定矩形ムービークリップなどを重ねて指定でも良いです。

最終的には切り取ったものをサーバーにJPEGとして保存します。

※現在、画像を読み込んでBitmapData.draw()で複製し、getPixelでデータ化しサーバーに送信、JPEGとして保存は出来ています。


どなたかご教授お願いいたします。


スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops