Heute stelle ich Ihnen ein Screenshot-Tool (z. B. Avatar usw.) vor, das häufig im Web verwendet wird:
JcropDemo
Projektstruktur:
Darstellung:
Das ist nützlich:
Nachdem er das gesehen hat, möchte jeder es selbst ausprobieren.
==========================================
Codeteil:
=========================================
Vorbereitung:
Download: Jcrop-0.9.10 (ZIP-Format)
Entpacken Sie es und fügen Sie es in Ihr Projekt ein, genau wie die Projektstruktur oben ...
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial1.html
Kopieren Sie den Codecode wie folgt:
<!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">
<Kopf>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutorials » 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(function($){
// Wie einfach ist das??
$('#target').Jcrop();
});
</script>
</head>
<Körper>
<div id="outer">
<div>
<div>
<h1>Jcrop – Hallo Welt</h1>
<img src="demo_files/pool.jpg" id="target" />
<p>
<b>Dieses Beispiel zeigt das Standardverhalten von Jcrop.</b>
Da keine Event-Handler angehängt wurden, wird nur ausgeführt
das Zuschneideverhalten.
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop-Startseite</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">Handbuch (Dokumente)</a>
</div>
</div>
</div>
</div>
</body>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial2.html
Kopieren Sie den Codecode wie folgt:
<!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">
<Kopf>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutorials » Event-Handler</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(function($){
$('#target').Jcrop({
onChange: showCoords,
onSelect: showCoords,
onRelease: clearCoords
});
});
// Einfacher Event-Handler, aufgerufen von onChange und onSelect
// Ereignishandler, gemäß dem Jcrop-Aufruf oben
Funktion showCoords(c)
{
$('#x1').val(cx);
$('#y1').val(cy);
$('#x2').val(c.x2);
$('#y2').val(c.y2);
$('#w').val(cw);
$('#h').val(ch);
};
Funktion clearCoords()
{
$('#Koordinateneingabe').val('');
};
</script>
</head>
<Körper>
<div id="outer">
<div>
<div>
<h1>Jcrop – Ereignishandler</h1>
<!-- Dies ist das Bild, an das wir Jcrop anhängen -->
<img src="demo_files/pool.jpg" id="target" />
<!-- Dies ist das Formular, das unser Event-Handler ausfüllt -->
<form id="koords"
class="Koordinaten"
onsubmit="return 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>Ein Beispiel mit einem einfachen Event-Handler.</b> Hier haben wir gebunden
mehrere Formularwerte zusammen mit einem einfachen Event-Handler-Aufruf.
Das Ergebnis ist, dass die Formularwerte in Echtzeit aktualisiert werden
Die Auswahl wird mit dem <em>onChange</em>-Handler von Jcrop geändert.
</p>
<p>
So einfach lässt sich Jcrop in ein herkömmliches Webformular integrieren!
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop-Startseite</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">Handbuch (Dokumente)</a>
</div>
</div>
</div>
</div>
</body>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial3.html
Kopieren Sie den Codecode wie folgt:
<!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">
<Kopf>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutorials » AspectRatio mit Vorschau</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(function($) {
// Variablen (in diesem Bereich) erstellen, um die API und die Bildgröße zu speichern
var jcrop_api,boundx,boundy;
$('#target').Jcrop({
onChange: updatePreview,
onSelect: updatePreview,
Aspektverhältnis: 1
}, function() {
// Verwenden Sie die API, um die tatsächliche Bildgröße zu erhalten
varbounds = this.getBounds();
gebundenx = Grenzen[0];
Grenze = Grenzen[1];
// Speichern Sie die API in der Variablen jcrop_api
jcrop_api = this;
});
Funktion updatePreview(c) {
if (parseInt(cw) > 0) {
var rx = 100/cw;
var ry = 100/ch;
$('#preview').css({
Breite: Math.round(rx *boundx) + 'px',
Höhe: Math.round(ry *boundy) + 'px',
marginLeft: '-' + Math.round(rx * cx) + 'px',
marginTop: '-' + Math.round(ry * cy) + 'px'
});
}
}
});
</script>
</head>
<Körper>
<div id="outer">
<div>
<div>
<h1>Jcrop – Seitenverhältnis mit Vorschaufenster</h1>
<Tabelle>
<tr>
<td>
<div>
<img src="demo_files/pool.jpg" id="target"/>
</div>
</td>
<td>
<div>
<img src="demo_files/pool.jpg" id="preview" />
</div>
</td>
</tr>
</table>
<p>
<b>Ein Beispiel für die Implementierung eines Vorschaufensters.</b> Das Vorschaufenster ist offensichtlich die anschaulichste und wird vollständig außerhalb von Jcrop mit einem einfachen Rückruf im jQuery-Stil erstellt. Diese Art von Schnittstelle könnte zum Erstellen einer Miniaturansicht oder eines Avatars nützlich sein . Der onChange-Ereignishandler wird verwendet, um die Ansicht im Vorschaufenster zu aktualisieren.
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop-Startseite</a> | <a href="http://deepliquid.com/content/Jcrop_Manual.html">Handbuch (Dokumente )</a>
</div>
</div>
</div>
</div>
</body>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial4.html
Kopieren Sie den Codecode wie folgt:
<!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">
<Kopf>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutorials » Animationen / Übergänge</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(function($){
var jcrop_api;
$('#target').Jcrop({
bgFade: wahr,
bgOpacity: .3,
setSelect: [60, 70, 540, 330]
},Funktion(){
jcrop_api = this;
});
$('#fadetog').change(function(){
jcrop_api.setOptions({
bgFade: this.checked
});
}).attr('checked','checked');
$('#shadetog').change(function(){
if (this.checked) $('#shadetxt').slideDown();
sonst $('#shadetxt').slideUp();
jcrop_api.setOptions({
Schatten: this.checked
});
}).attr('checked',false);
// Seitenabschnitte definieren
var Abschnitte = {
anim_buttons: 'Auswahl animieren',
bgo_buttons: 'bgOpacity ändern',
bgc_buttons: 'bgColor ändern'
};
// Animationsschaltflächen definieren
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-Schaltflächen definieren
var bgo = {
Niedrig: .2,
Mitte: .5,
Hoch: .8,
Vollständig: 1
};
// BgColor-Schaltflächen definieren
var bgc = {
Rot: '#900',
Blau: '#4BB6F0',
Gelb: '#F0B207',
Grün: '#46B81C',
Weiß: 'weiß',
Schwarz: „schwarz“
};
// Feldsatzziele für Schaltflächen erstellen
for(i in Abschnitten)
insertSection(i,sections[i]);
// Animationsschaltflächen erstellen
for(i in ac) {
$('#anim_buttons').append(
$('<button />').append(i).click(animHandler(ac[i])), ' '
);
}
// BgOpacity-Schaltflächen erstellen
for(i in bgo) {
$('#bgo_buttons').append(
$('<button />').append(i).click(setoptHandler('bgOpacity',bgo[i])), ' '
);
}
// BgColor-Schaltflächen erstellen
for(i in bgc) {
$('#bgc_buttons').append(
$('<button />').append(i).css({
Hintergrundfarbe: bgc[i],
Farbe: ((i == 'Schwarz') || (i == 'Rot'))?'weiß':'schwarz'
}).click(setoptHandler('bgColor',bgc[i])), ' '
);
}
// Funktion zum Einfügen benannter Abschnitte in die Schnittstelle
Funktion insertSection(k,v) {
$('#interface').append(
$('<fieldset></fieldset>').attr('id',k).append(
$('<legend></legend>').append(v)
)
);
};
// Handler für Optionseinstellungsschaltflächen
Funktion setoptHandler(k,v) {
Rückgabefunktion() {
var opt = { };
opt[k] = v;
jcrop_api.setOptions(opt);
return false;
};
};
// Handler für Animationsschaltflächen
Funktion animHandler(v) {
Rückgabefunktion() {
jcrop_api.animateTo(v);
return false;
};
};
$('#anim_buttons').append(
$('<button></button>').append('Bye!').click(function(){
jcrop_api.animateTo(
[300.200.300.200],
function(){ this.release( }
);
return false;
})
);
$('#interface').show();
});
</script>
</head>
<Körper>
<div id="outer">
<div>
<div>
<h1>Jcrop – Animationen/Übergänge</h1>
<img src="demo_files/sago.jpg" id="target" />
<div id="interface" style="margin: 1em 0;"></div>
<div><label><input type="checkbox" id="fadetog" /> Fading aktivieren (bgFade: true)</label></div>
<div><label><input type="checkbox" id="shadetog" /> Experimentellen Shader verwenden (Farbton: true)</label></div>
<p id="shadetxt" style="display:none; color:#900;">
<b>Experimenteller Shader aktiv.</b>
Jcrop enthält jetzt einen Schattierungsmodus, der das Erstellen erleichtert
bessere transparente Jcrop-Instanzen. Der experimentelle Shader ist kleiner
robuster als die Standard-Schattierungsmethode von Jcrop und sollte es auch sein
Wird verwendet, wenn Sie diese Funktionalität benötigen.
</p>
<p>
<b>Animation/Übergänge.</b>
Demonstration der animateTo-API-Methode und Übergänge für bgColor
und bgOpacity-Optionen erfordern die Einbeziehung von John Resig
jQuery <a href="http://plugins.jquery.com/project/color">Farbe
Animationen</a>-Plugin. Wenn es nicht enthalten ist, verblassen die Farben nicht.
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop-Startseite</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">Handbuch (Dokumente)</a>
</div>
</div>
</div>
</div>
</body>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial5.html
Kopieren Sie den Codecode wie folgt:
<!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">
<Kopf>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutorials » API-Demo</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 { Position: relativ }
.optdual .offset { position: absolute left: 18em }
.optlist label { width: 16em; display: block }
#dl_links { margin-top: .5em }
</style>
<script type="text/javascript">
jQuery(function($){
// Die Variable jcrop_api enthält einen Verweis auf
// Jcrop-API, sobald Jcrop instanziiert ist.
var jcrop_api;
// In diesem Beispiel, da Jcrop angehängt oder getrennt werden kann
// Nach Lust und Laune des Benutzers habe ich den Aufruf in eine Funktion verpackt
initJcrop();
// Die Funktion ist ziemlich einfach
Funktion initJcrop()//{{{
{
// Alle Schnittstellenelemente ausblenden, die Jcrop erfordern
// (Dies ist für den Teil der lokalen Benutzeroberfläche.)
$('.requiresjcrop').hide();
//Jcrop auf typische Weise aufrufen
$('#target').Jcrop({
onRelease: ReleaseCheck
},Funktion(){
jcrop_api = this;
jcrop_api.animateTo([100,100,400,300]);
// Einrichten und Anzeigen der Schnittstelle für „aktiviert“
$('#can_click,#can_move,#can_size').attr('checked','checked');
$('#ar_lock,#size_lock,#bg_swap').attr('checked',false);
$('.requiresjcrop').show();
});
};
//}}}
// Verwenden Sie die API, um Zuschneidemaße zu finden
// Dann eine zufällige Auswahl generieren
// Diese Funktion wird von den Schaltflächen setSelect und animateTo verwendet
// Hauptsächlich zu Demonstrationszwecken
Funktion getRandom() {
var dim = jcrop_api.getBounds();
zurückkehren [
Math.round(Math.random() * dim[0]),
Math.round(Math.random() * dim[1]),
Math.round(Math.random() * dim[0]),
Math.round(Math.random() * dim[1])
];
};
// Diese Funktion ist an den onRelease-Handler gebunden ...
// Unter bestimmten Umständen (z. B. wenn Sie minSize festlegen
// und AspectRatio zusammen), können Sie versehentlich verlieren
// die Auswahl. Dieser Rückruf ermöglicht erneut das Erstellen von Auswahlen
// in einem solchen Fall basiert die Notwendigkeit, dies zu tun, auf a
// fehlerhaftes Verhalten, es wird empfohlen, dass Sie es irgendwie einfangen
// der onRelease-Rückruf, wenn Sie AllowSelect verwenden: false
Funktion releaseCheck()
{
jcrop_api.setOptions({allowSelect: true });
$('#can_click').attr('checked',false);
};
//Schnittstellenschaltflächen anhängen
// Das scheint viel Code zu sein, aber es ist eine einfache Sache
$('#setSelect').click(function(e) {
// Legt eine zufällige Auswahl fest
jcrop_api.setSelect(getRandom());
});
$('#animateTo').click(function(e) {
// Animiert zu einer zufälligen Auswahl
jcrop_api.animateTo(getRandom());
});
$('#release').click(function(e) {
// Release-Methode löscht die Auswahl
jcrop_api.release();
});
$('#disable').click(function(e) {
// Jcrop-Instanz deaktivieren
jcrop_api.disable();
// Aktualisieren Sie die Schnittstelle, um den deaktivierten Status widerzuspiegeln
$('#enable').show();
$('.requiresjcrop').hide();
});
$('#enable').click(function(e) {
// Jcrop-Instanz erneut aktivieren
jcrop_api.enable();
// Aktualisieren Sie die Schnittstelle, um den aktivierten Status widerzuspiegeln
$('#enable').hide();
$('.requiresjcrop').show();
});
$('#rehook').click(function(e) {
// Diese Schaltfläche ist sichtbar, wenn Jcrop zerstört wurde
// Es führt das erneute Anhängen durch und aktualisiert die Benutzeroberfläche
$('#rehook,#enable').hide();
initJcrop();
$('#unhook,.requiresjcrop').show();
return false;
});
$('#unhook').click(function(e) {
// Jcrop-Widget zerstören, Originalzustand wiederherstellen
jcrop_api.destroy();
// Aktualisieren Sie die Schnittstelle, um den nicht angehängten Status widerzuspiegeln
$('#unhook,#enable,.requiresjcrop').hide();
$('#rehook').show();
return false;
});
// Schließen Sie die drei Schaltflächen zum Bildaustausch an
$('#img1').click(function(e) {
jcrop_api.setImage('demo_files/sago.jpg');
jcrop_api.setOptions({ bgOpacity: .6 });
return false;
});
$('#img2').click(function(e) {
jcrop_api.setImage('demo_files/pool.jpg');
jcrop_api.setOptions({ bgOpacity: .6 });
return false;
});
$('#img3').click(function(e) {
jcrop_api.setImage('demo_files/sago.jpg',function(){
this.setOptions({
bgOpacity: 1,
äußeres Bild: 'demo_files/sagomod.jpg'
});
this.animateTo(getRandom());
});
return false;
});
// Die Kontrollkästchen legen einfach Optionen basierend auf dem aktivierten Wert fest
// Optionen werden durch Übergabe eines neuen Optionsobjekts geändert
// Um seltsames Verhalten zu verhindern, werden sie außerdem zunächst überprüft
// Dies entspricht dem Standardanfangszustand von 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?
{ AspectRatio: 4/3 }: { AspectRatio: 0 });
jcrop_api.focus();
});
$('#size_lock').change(function(e) {
jcrop_api.setOptions(this.checked? {
Mindestgröße: [80, 80],
maxSize: [350, 350]
}: {
minSize: [0, 0],
maxSize: [0, 0]
});
jcrop_api.focus();
});
});
</script>
</head>
<Körper>
<div id="outer">
<div>
<div>
<h1>Jcrop – API-Demo</h1>
<img src="demo_files/sago.jpg" id="target" />
<div style="margin: .8em 0 .5em;">
<span>
<button id="setSelect">setSelect</button>
<button id="animateTo">animateTo</button>
<button id="release">Freigabe</button>
<button id="disable">Deaktivieren</button>
</span>
<button id="enable" style="display:none;">Erneut aktivieren</button>
<button id="unhook">Zerstören!</button>
<button id="rehook" style="display:none;">Jcrop anhängen</button>
</div>
<fieldset>
<legend>Option schaltet um</legend>
<div>
<label><input type="checkbox" id="ar_lock" />Seitenverhältnis</label>
<label><input type="checkbox" id="size_lock" />minSize/maxSize-Einstellung</label>
</div>
<div>
<label><input type="checkbox" id="can_click" />Neue Auswahl zulassen</label>
<label><input type="checkbox" id="can_move" />Auswahl kann verschoben werden</label>
<label><input type="checkbox" id="can_size" />Skalierbare Auswahl</label>
</div>
</fieldset>
<fieldset style="margin: .5em 0;">
<legend>Bild ändern</legend>
<span>
<button id="img2">Pool</button>
<button id="img1">Sago</button>
<button id="img3">Sago mit äußerem Bild</button>
</span>
</fieldset>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Jcrop-Startseite</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">Handbuch (Dokumente)</a>
</div>
</div>
</div>
</div>
</body>
</html>