今日はウェブ上でよく使われるスクリーンショット(アバターなど)ツールを紹介します。
Jcropデモ
プロジェクトの構造:
レンダリング:
これは便利です:
これを見たら、誰もが自分も試してみたくなります。
==========================================
コード部分:
==========================================
準備:
ダウンロード: Jcrop-0.9.10(zip形式)
上記のプロジェクト構造と同じように、解凍してプロジェクトに配置します。
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial1.html
次のようにコードをコピーします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」
<html xmlns="http://www.w3.org/1999/xhtml">
<頭>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » チュートリアル » Hello World</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<link rel="stylesheet" href="../css/jquery.Jcrop.css" type="text/css" />
<link rel="stylesheet" href="demo_files/demos.css" type="text/css" />
<script type="text/javascript">
jQuery(関数($){
// こんなに簡単なんですか??
$('#target').Jcrop();
});
</script>
</head>
<本文>
<div id="アウター">
<div>
<div>
<h1>Jcrop - Hello World</h1>
<img src="demo_files/pool.jpg" id="ターゲット" />
<p>
<b>この例は、Jcrop のデフォルトの動作を示しています。</b>
イベントハンドラーがアタッチされていないため、実行のみが行われます。
トリミング動作。
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop ホーム</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">マニュアル (ドキュメント)</a>
</div>
</div>
</div>
</div>
</body>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial2.html
次のようにコードをコピーします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」
<html xmlns="http://www.w3.org/1999/xhtml">
<頭>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » チュートリアル » イベント ハンドラー</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<link rel="stylesheet" href="../css/jquery.Jcrop.css" type="text/css" />
<link rel="stylesheet" href="demo_files/demos.css" type="text/css" />
<script type="text/javascript">
jQuery(関数($){
$('#target').Jcrop({
onChange: showCoords、
onSelect: showCoords、
onRelease:clearCoords
});
});
// onChange および onSelect から呼び出される単純なイベント ハンドラー
// 上記の Jcrop 呼び出しによるイベント ハンドラー
関数 showCoords(c)
{
$('#x1').val(cx);
$('#y1').val(cy);
$('#x2').val(c.x2);
$('#y2').val(c.y2);
$('#w').val(cw);
$('#h').val(ch);
};
関数clearCoords()
{
$('#coords input').val('');
};
</script>
</head>
<本文>
<div id="アウター">
<div>
<div>
<h1>Jcrop - イベント ハンドラー</h1>
<!-- これは Jcrop を添付する画像です -->
<img src="demo_files/pool.jpg" id="ターゲット" />
<!-- これはイベント ハンドラーが入力するフォームです -->
<form id="座標"
クラス = "座標"
onsubmit="戻り値 false;"
action="http://example.com/post.php">
<div>
<label>X1 <input type="text" size="4" id="x1" name="x1" /></label>
<label>Y1 <input type="text" size="4" id="y1" name="y1" /></label>
<label>X2 <input type="text" size="4" id="x2" name="x2" /></label>
<label>Y2 <input type="text" size="4" id="y2" name="y2" /></label>
<label>W <input type="text" size="4" id="w" name="w" /></label>
<label>H <input type="text" size="4" id="h" name="h" /></label>
</div>
</form>
<p>
<b>基本的なイベント ハンドラーを使用した例。</b> ここでは結び付けています。
いくつかのフォーム値を単純なイベント ハンドラー呼び出しと組み合わせます。
その結果、フォームの値は次のようにリアルタイムで更新されます。
選択は、Jcrop の<em>onChange</em> ハンドラーを使用して変更されます。
</p>
<p>
これにより、Jcrop を従来の Web フォームに簡単に統合できます。
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop ホーム</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">マニュアル (ドキュメント)</a>
</div>
</div>
</div>
</div>
</body>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial3.html
次のようにコードをコピーします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」
<html xmlns="http://www.w3.org/1999/xhtml">
<頭>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » チュートリアル » プレビュー付きのアスペクト比</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<link rel="stylesheet" href="../css/jquery.Jcrop.css" type="text/css" />
<link rel="stylesheet" href="demo_files/demos.css" type="text/css" />
<script type="text/javascript">
jQuery(関数($) {
// API と画像サイズを保持する変数を (このスコープ内に) 作成します
var jcrop_api、boundx、boundy;
$('#target').Jcrop({
onChange: updatePreview、
onSelect: updatePreview、
アスペクト比 : 1
}、 関数() {
// API を使用して実際の画像サイズを取得します
var 境界 = this.getBounds();
境界x = 境界[0];
境界 = 境界[1];
// API を jcrop_api 変数に格納します
jcrop_api = これ;
});
関数 updatePreview(c) {
if (parseInt(cw) > 0) {
var rx = 100/cw;
var ry = 100/ch;
$('#preview').css({
幅 : Math.round(rx *boundx) + 'px',
高さ : Math.round(ry * 境界) + 'px',
marginLeft : '-' + Math.round(rx * cx) + 'px',
marginTop : '-' + Math.round(ry * cy) + 'px'
});
}
}
});
</script>
</head>
<本文>
<div id="アウター">
<div>
<div>
<h1>Jcrop - プレビュー ペイン付きのアスペクト比</h1>
<テーブル>
<tr>
<td>
<div>
<img src="demo_files/pool.jpg" id="ターゲット"/>
</div>
</td>
<td>
<div>
<img src="demo_files/pool.jpg" id="プレビュー" />
</div>
</td>
</tr>
</テーブル>
<p>
<b>プレビュー ペインの実装例。</b> 明らかに最も視覚的なデモであるプレビュー ペインは、単純な jQuery 風味のコールバックを使用して完全に Jcrop の外部で実行されます。このタイプのインターフェイスは、サムネイルやアバターの作成に役立ちます。 onChange イベント ハンドラーは、プレビュー ペインのビューを更新するために使用されます。
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop ホーム</a> <a href="http://deepliquid.com/content/Jcrop_Manual.html">マニュアル (ドキュメント) )</a>
</div>
</div>
</div>
</div>
</body>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial4.html
次のようにコードをコピーします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」
<html xmlns="http://www.w3.org/1999/xhtml">
<頭>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » チュートリアル » アニメーション / トランジション</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<script src="../js/jquery.color.js" type="text/javascript"></script>
<link rel="stylesheet" href="../css/jquery.Jcrop.css" type="text/css" />
<link rel="stylesheet" href="../css/jquery.Jcrop.extras.css" type="text/css" />
<link rel="stylesheet" href="demo_files/demos.css" type="text/css" />
<script type="text/javascript">
jQuery(関数($){
var jcrop_api;
$('#target').Jcrop({
bgFade: true、
bg不透明度: .3、
setSelect: [60、70、540、330]
}、関数(){
jcrop_api = これ;
});
$('#fadetog').change(function(){
jcrop_api.setOptions({
bgFade: this.checked
});
}).attr('チェック済み','チェック済み');
$('#shadetog').change(function(){
if (this.checked) $('#shadetxt').slideDown();
それ以外の場合 $('#shadetxt').slideUp();
jcrop_api.setOptions({
シェード: this.checked
});
}).attr('チェック済み',false);
// ページセクションを定義する
var セクション = {
anim_buttons: '選択範囲をアニメーション化する',
bgo_buttons: 'bgOpacity を変更',
bgc_buttons: 'bgColor を変更'
};
// アニメーションボタンを定義する
var ac = {
anim1: [217,122,382,284],
anim2: [20,20,580,380],
anim3: [24,24,176,376],
anim4: [347,165,550,355]、
anim5: [136,55,472,183]
};
// bgOpacity ボタンを定義します
var bgo = {
低: .2、
ミッド: 0.5、
高: .8、
フル: 1
};
// bgColor ボタンを定義します
var bgc = {
赤:「#900」、
青: '#4BB6F0'、
黄色: '#F0B207'、
緑: '#46B81C'、
白: 「白」、
黒:「黒」
};
// ボタンのフィールドセットターゲットを作成します
for(i セクション)
insertSection(i,セクション[i]);
// アニメーションボタンを作成する
for(i in ac) {
$('#anim_buttons').append(
$('<button />').append(i).click(animHandler(ac[i])), ' '
);
}
// bgOpacity ボタンを作成します
for(i in bgo) {
$('#bgo_buttons').append(
$('<button />').append(i).click(setoptHandler('bgOpacity',bgo[i])), ' '
);
}
// bgColor ボタンを作成します
for(i in bgc) {
$('#bgc_buttons').append(
$('<button />').append(i).css({
背景色: bgc[i]、
色: ((i == '黒') || (i == '赤'))?'白':'黒'
}).click(setoptHandler('bgColor',bgc[i])), ' '
);
}
// 名前付きセクションをインターフェースに挿入する関数
関数 insertSection(k,v) {
$('#interface').append(
$('<フィールドセット></フィールドセット>').attr('id',k).append(
$('<凡例></凡例>').append(v)
)
);
};
// オプション設定ボタンのハンドラー
関数 setoptHandler(k,v) {
戻り関数() {
var opt = { };
オプト[k] = v;
jcrop_api.setOptions(opt);
false を返します。
};
};
// アニメーションボタンのハンドラー
関数 animHandler(v) {
戻り関数() {
jcrop_api.animateTo(v);
false を返します。
};
};
$('#anim_buttons').append(
$('<button></button>').append('さようなら!').click(function(){
jcrop_api.animateTo(
[300,200,300,200],
function(){ this.release() }
);
false を返します。
})
);
$('#interface').show();
});
</script>
</head>
<本文>
<div id="アウター">
<div>
<div>
<h1>Jcrop - アニメーション/トランジション</h1>
<img src="demo_files/sago.jpg" id="ターゲット" />
<div id="interface" style="margin: 1em 0;"></div>
<div><label><input type="checkbox" id="fadetog" /> フェージングを有効にする (bgFade: true)</label></div>
<div><label><input type="checkbox" id="shadetog" /> 実験的なシェーダを使用します (shade: true)</label></div>
<p id="shadetxt" style="display:none; color:#900;">
<b>実験用シェーダーがアクティブです。</b>
Jcrop には、構築を容易にするシェーディング モードが含まれるようになりました。
より透明な Jcrop インスタンスが少なくなります。
Jcrop のデフォルトのシェーディング方法よりも堅牢であり、
この機能が必要な場合に使用されます。
</p>
<p>
<b>アニメーション/トランジション。</b>
animateTo API メソッドと bgColor のトランジションのデモ
および bgOpacity オプションには、John Resig のオプションを含める必要があります。
jQuery <a href="http://plugins.jquery.com/project/color">カラー
アニメーション</a>プラグインが含まれていない場合、色は消えません。
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop ホーム</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">マニュアル (ドキュメント)</a>
</div>
</div>
</div>
</div>
</body>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial5.html
次のようにコードをコピーします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」
<html xmlns="http://www.w3.org/1999/xhtml">
<頭>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » チュートリアル » API デモ</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<link rel="stylesheet" href="../css/jquery.Jcrop.css" type="text/css" />
<link rel="stylesheet" href="demo_files/demos.css" type="text/css" />
<style type="text/css">
.optdual { 位置: 相対 }
.optdual .offset { 位置: 左: 18em;
.optlist ラベル { 幅: 16em; }
#dl_links {マージントップ: .5em;
</スタイル>
<script type="text/javascript">
jQuery(関数($){
// 変数 jcrop_api は、
// Jcrop がインスタンス化された後の Jcrop API。
var jcrop_api;
// この例では、Jcrop はアタッチまたはデタッチされる可能性があるため、
// ユーザーの気まぐれに応じて、呼び出しを関数にラップしました
initJcrop();
// 関数は非常に単純です
関数 initJcrop()//{{{
{
// Jcrop を必要とするインターフェイス要素を非表示にします
// (これはローカル ユーザー インターフェイス部分用です。)
$('.requiresjcrop').hide();
//典型的な方法で Jcrop を呼び出します
$('#target').Jcrop({
onRelease: releaseCheck
}、関数(){
jcrop_api = これ;
jcrop_api.animateTo([100,100,400,300]);
// インターフェイスを「有効」に設定して表示します
$('#can_click,#can_move,#can_size').attr('チェック済み','チェック済み');
$('#ar_lock,#size_lock,#bg_swap').attr('checked',false);
$('.requiresjcrop').show();
});
};
//}}}
// API を使用してトリミング寸法を検索します
// その後、ランダムな選択を生成します
// この関数は setSelect ボタンと animateTo ボタンで使用されます
// 主にデモ用
関数 getRandom() {
var dim = jcrop_api.getBounds();
戻る [
Math.round(Math.random() * dim[0]),
Math.round(Math.random() * dim[1]),
Math.round(Math.random() * dim[0]),
Math.round(Math.random() * dim[1])
];
};
// この関数は onRelease ハンドラーにバインドされています...
// 特定の状況 (minSize を設定した場合など)
// と aspectRatio を一緒にすると)、うっかり失う可能性があります
// このコールバックにより、選択範囲の作成が再度有効になります。
// このような場合、これを行う必要があることに基づいています。
// バグのある動作なので、何らかの方法でトラップすることをお勧めします
//allowSelect を使用する場合の onRelease コールバック: false
関数 releaseCheck()
{
jcrop_api.setOptions({allowSelect: true });
$('#can_click').attr('チェック済み',false);
};
//インターフェースボタンをアタッチします
// これは大量のコードのように見えるかもしれませんが、簡単なことです
$('#setSelect').click(function(e) {
// ランダムな選択を設定します
jcrop_api.setSelect(getRandom());
});
$('#animateTo').click(function(e) {
// ランダムに選択したものをアニメーション化します
jcrop_api.animateTo(getRandom());
});
$('#release').click(function(e) {
// Release メソッドは選択をクリアします
jcrop_api.release();
});
$('#disable').click(function(e) {
// Jcrop インスタンスを無効にする
jcrop_api.disable();
// 無効な状態を反映するようにインターフェースを更新します
$('#enable').show();
$('.requiresjcrop').hide();
});
$('#enable').click(function(e) {
// Jcrop インスタンスを再度有効にする
jcrop_api.enable();
// 有効な状態を反映するようにインターフェースを更新します
$('#enable').hide();
$('.requiresjcrop').show();
});
$('#rehook').click(function(e) {
// このボタンは、Jcrop が破棄されたときに表示されます
// 再アタッチを実行し、UI を更新します
$('#rehook,#enable').hide();
initJcrop();
$('#unhook,.requiresjcrop').show();
false を返します。
});
$('#unhook').click(function(e) {
// Jcrop ウィジェットを破棄し、元の状態に戻します
jcrop_api.destroy();
// アタッチされていない状態を反映するようにインターフェースを更新します
$('#unhook,#enable,.requiresjcrop').hide();
$('#rehook').show();
false を返します。
});
// 3 つの画像切り替えボタンを接続します
$('#img1').click(function(e) {
jcrop_api.setImage('demo_files/sago.jpg');
jcrop_api.setOptions({ bgOpacity: .6 });
false を返します。
});
$('#img2').click(function(e) {
jcrop_api.setImage('demo_files/pool.jpg');
jcrop_api.setOptions({ bgOpacity: .6 });
false を返します。
});
$('#img3').click(function(e) {
jcrop_api.setImage('demo_files/sago.jpg',function(){
this.setOptions({
bg不透明度: 1、
外側の画像: 'demo_files/sagomod.jpg'
});
this.animateTo(getRandom());
});
false を返します。
});
// チェックボックスはチェックされた値に基づいてオプションを設定するだけです
// 新しいオプション オブジェクトを渡すことでオプションが変更されます
// また、おかしな動作を防ぐために、最初にチェックされます。
// これは Jcrop のデフォルトの初期状態と一致します
$('#can_click').change(function(e) {
jcrop_api.setOptions({allowSelect: !!this.checked });
jcrop_api.focus();
});
$('#can_move').change(function(e) {
jcrop_api.setOptions({allowMove: !!this.checked });
jcrop_api.focus();
});
$('#can_size').change(function(e) {
jcrop_api.setOptions({allowResize: !!this.checked });
jcrop_api.focus();
});
$('#ar_lock').change(function(e) {
jcrop_api.setOptions(this.checked?
{ アスペクト比: 4/3 }: { アスペクト比: 0 });
jcrop_api.focus();
});
$('#size_lock').change(function(e) {
jcrop_api.setOptions(this.checked? {
最小サイズ: [80, 80]、
最大サイズ: [350, 350]
}: {
minSize: [0, 0],
maxSize: [0, 0]
});
jcrop_api.focus();
});
});
</script>
</head>
<本文>
<div id="アウター">
<div>
<div>
<h1>Jcrop - API デモ</h1>
<img src="demo_files/sago.jpg" id="ターゲット" />
<div style="マージン: .8em 0 .5em;">
<スパン>
<button id="setSelect">setSelect</button>
<button id="animateTo">animateTo</button>
<button id="release">リリース</button>
<button id="disable">無効にする</button>
</スパン>
<button id="enable" style="display:none;">再度有効にする</button>
<button id="unhook">破壊してください!</button>
<button id="rehook" style="display:none;">Jcrop をアタッチ</button>
</div>
<フィールドセット>
<legend>オプションの切り替え</legend>
<div>
<label><input type="checkbox" id="ar_lock" />アスペクト比</label>
<label><input type="checkbox" id="size_lock" />minSize/maxSize の設定</label>
</div>
<div>
<label><input type="checkbox" id="can_click" />新しい選択を許可する</label>
<label><input type="checkbox" id="can_move" />選択範囲は移動できます</label>
<label><input type="checkbox" id="can_size" />サイズ変更可能な選択範囲</label>
</div>
</フィールドセット>
<fieldset style="margin: .5em 0;">
<legend>画像の変更</legend>
<スパン>
<button id="img2">プール</button>
<button id="img1">サゴ</button>
<button id="img3">Sago とアウターイメージ</button>
</スパン>
</フィールドセット>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop ホーム</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">マニュアル (ドキュメント)</a>
</div>
</div>
</div>
</div>
</body>
</html>