Hoy les presentaré una herramienta de captura de pantalla (como avatar, etc.) que se usa con frecuencia en la web:
Demostración de jcrop
Estructura del proyecto:
Representación:
Esto es útil:
Después de ver esto, todos quieren probarlo ellos mismos.
=============================================
Parte del código:
=============================================
Preparación:
Descargar: Jcrop-0.9.10 (formato zip)
Descomprímalo y colóquelo en su proyecto, tal como la estructura del proyecto anterior...
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial1.html
Copie el código de código de la siguiente manera:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Estricto//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<cabeza>
<meta http-equiv="tipo de contenido" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutoriales » Hola mundo</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<enlace rel="hoja de estilo" href="../css/jquery.Jcrop.css" tipo="texto/css" />
<enlace rel="hoja de estilo" href="demo_files/demos.css" type="text/css" />
<tipo de script="texto/javascript">
jQuery(función($){
// ¿Qué tan fácil es esto?
$('#objetivo').Jcrop();
});
</script>
</cabeza>
<cuerpo>
<div id="exterior">
<div>
<div>
<h1>Jcrop - Hola mundo</h1>
<img src="demo_files/pool.jpg" id="destino" />
<p>
<b>Este ejemplo demuestra el comportamiento predeterminado de Jcrop.</b>
Como no se han adjuntado controladores de eventos, solo realiza
el comportamiento de cultivo.
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Inicio de Jcrop</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">Manual (Documentos)</a>
</div>
</div>
</div>
</div>
</cuerpo>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial2.html
Copie el código de código de la siguiente manera:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Estricto//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<cabeza>
<meta http-equiv="tipo de contenido" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutoriales » Controlador de eventos</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<enlace rel="hoja de estilo" href="../css/jquery.Jcrop.css" tipo="texto/css" />
<enlace rel="hoja de estilo" href="demo_files/demos.css" type="text/css" />
<tipo de script="texto/javascript">
jQuery(función($){
$('#objetivo').Jcrop({
onChange: mostrarCoords,
onSelect: mostrarCoords,
onRelease: clearCoords
});
});
// Manejador de eventos simple, llamado desde onChange y onSelect
// controladores de eventos, según la invocación de Jcrop anterior
función mostrarCoords(c)
{
$('#x1').val(cx);
$('#y1').val(cy);
$('#x2').val(c.x2);
$('#y2').val(c.y2);
$('#w').val(cw);
$('#h').val(ch);
};
función borrarCoords()
{
$('#entrada de coordenadas').val('');
};
</script>
</cabeza>
<cuerpo>
<div id="exterior">
<div>
<div>
<h1>Jcrop - Controladores de eventos</h1>
<!-- Esta es la imagen a la que adjuntamos Jcrop -->
<img src="demo_files/pool.jpg" id="destino" />
<!-- Este es el formulario que llena nuestro controlador de eventos -->
<formulario id="coords"
clase="coordenadas"
onsubmit="return false;"
acción="http://ejemplo.com/post.php">
<div>
<label>X1 <tipo de entrada="texto" tamaño="4" id="x1" nombre="x1" /></label>
<label>Y1 <tipo de entrada="texto" tamaño="4" id="y1" nombre="y1" /></label>
<label>X2 <tipo de entrada="texto" tamaño="4" id="x2" nombre="x2" /></label>
<label>Y2 <tipo de entrada="texto" tamaño="4" id="y2" nombre="y2" /></label>
<label>W <tipo de entrada="texto" tamaño="4" id="w" nombre="w" /></label>
<label>H <tipo de entrada="texto" tamaño="4" id="h" nombre="h" /></label>
</div>
</formulario>
<p>
<b>Un ejemplo con un controlador de eventos básico.</b> Aquí hemos vinculado
varios valores de formulario junto con una simple invocación del controlador de eventos.
El resultado es que los valores del formulario se actualizan en tiempo real a medida que
la selección se cambia usando el controlador <em>onChange</em> de Jcrop.
</p>
<p>
¡Así de fácil se puede integrar Jcrop en un formulario web tradicional!
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Inicio de Jcrop</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">Manual (Documentos)</a>
</div>
</div>
</div>
</div>
</cuerpo>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial3.html
Copie el código de código de la siguiente manera:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Estricto//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<cabeza>
<meta http-equiv="tipo de contenido" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutoriales » relación de aspecto con vista previa</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<enlace rel="hoja de estilo" href="../css/jquery.Jcrop.css" tipo="texto/css" />
<enlace rel="hoja de estilo" href="demo_files/demos.css" type="text/css" />
<tipo de script="texto/javascript">
jQuery(función($) {
// Crea variables (en este ámbito) para contener la API y el tamaño de la imagen
var jcrop_api, enlazadox, enlazado;
$('#objetivo').Jcrop({
onChange: actualización de vista previa,
onSelect: actualizarVista previa,
relación de aspecto: 1
}, función() {
// Usa la API para obtener el tamaño real de la imagen
var límites = this.getBounds();
límitex = límites[0];
límite = límites[1];
// Almacena la API en la variable jcrop_api
jcrop_api = esto;
});
función actualizarVistaPrevia(c) {
si (parseInt(cw) > 0) {
var rx = 100/cw;
variedad = 100/canal;
$('#vista previa').css({
ancho: Math.round(rx *boundx) + 'px',
altura: Math.round(ry *boundy) + 'px',
margenIzquierdo: '-' + Math.round(rx * cx) + 'px',
marginTop: '-' + Math.round(ry * cy) + 'px'
});
}
}
});
</script>
</cabeza>
<cuerpo>
<div id="exterior">
<div>
<div>
<h1>Jcrop: relación de aspecto con panel de vista previa</h1>
<tabla>
<tr>
<td>
<div>
<img src="demo_files/pool.jpg" id="destino"/>
</div>
</td>
<td>
<div>
<img src="demo_files/pool.jpg" id="vista previa" />
</div>
</td>
</tr>
</tabla>
<p>
<b>Un ejemplo de implementación de un panel de vista previa.</b> Obviamente, la demostración más visual, el panel de vista previa se logra completamente fuera de Jcrop con una simple devolución de llamada con estilo jQuery. Este tipo de interfaz podría ser útil para crear una miniatura o un avatar. El controlador de eventos onChange se utiliza para actualizar la vista en el panel de vista previa.
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Inicio de Jcrop</a> | <a href="http://deepliquid.com/content/Jcrop_Manual.html">Manual (Documentos) )</a>
</div>
</div>
</div>
</div>
</cuerpo>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial4.html
Copie el código de código de la siguiente manera:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Estricto//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<cabeza>
<meta http-equiv="tipo de contenido" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutoriales » Animaciones / Transiciones</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>
<enlace rel="hoja de estilo" href="../css/jquery.Jcrop.css" tipo="texto/css" />
<enlace rel="hoja de estilo" href="../css/jquery.Jcrop.extras.css" type="text/css" />
<enlace rel="hoja de estilo" href="demo_files/demos.css" type="text/css" />
<tipo de script="texto/javascript">
jQuery(función($){
var jcrop_api;
$('#objetivo').Jcrop({
bgFade: verdadero,
bgOpacidad: .3,
establecerSelección: [60, 70, 540, 330]
},función(){
jcrop_api = esto;
});
$('#fadetog').cambiar(función(){
jcrop_api.setOptions({
bgFade: esto.marcado
});
}).attr('marcado','marcado');
$('#shadetog').cambiar(función(){
if (this.checked) $('#shadetxt').slideDown();
else $('#shadetxt').slideUp();
jcrop_api.setOptions({
sombra: this.checked
});
}).attr('marcado',falso);
// Definir secciones de página
var secciones = {
anim_buttons: 'Animar selección',
bgo_buttons: 'Cambiar bgOpacidad',
bgc_buttons: 'Cambiar bgColor'
};
// Definir botones de animación
var ac = {
animación1: [217,122,382,284],
animación2: [20,20,580,380],
anima3: [24,24,176,376],
anima4: [347,165,550,355],
anima5: [136,55,472,183]
};
// Definir botones bgOpacity
var bgo = {
Bajo: .2,
Medio: .5,
Alto: .8,
Completo: 1
};
// Definir botones bgColor
var bgc = {
Rojo: '#900',
Azul: '#4BB6F0',
Amarillo: '#F0B207',
Verde: '#46B81C',
Blanco: 'blanco',
Negro: 'negro'
};
// Crear objetivos de conjunto de campos para botones
para (i en secciones)
insertSection(i,secciones[i]);
// Crear botones de animación
para (yo en ac) {
$('#anim_buttons').append(
$('<botón />').append(i).click(animHandler(ac[i])), ' '
);
}
// Crear botones bgOpacity
para (yo en bgo) {
$('#bgo_buttons').append(
$('<botón />').append(i).click(setoptHandler('bgOpacity',bgo[i])), ' '
);
}
// Crear botones bgColor
para (yo en bgc) {
$('#bgc_buttons').append(
$('<botón />').append(i).css({
Color de fondo: bgc[i],
color: ((i == 'Negro') || (i == 'Rojo'))?'blanco':'negro'
}).click(setoptHandler('bgColor',bgc[i])), ' '
);
}
// Función para insertar secciones con nombre en la interfaz
función insertarSección(k,v) {
$('#interfaz').append(
$('<fieldset></fieldset>').attr('id',k).append(
$('<leyenda></leyenda>').append(v)
)
);
};
// Controlador para botones de configuración de opciones
función setoptHandler(k,v) {
función de retorno() {
var optar = { };
optar[k] = v;
jcrop_api.setOptions(optar);
devolver falso;
};
};
// Manejador de botones de animación
función animador(v) {
función de retorno() {
jcrop_api.animateTo(v);
devolver falso;
};
};
$('#anim_buttons').append(
$('<botón></botón>').append('¡Adiós!').click(función(){
jcrop_api.animateTo(
[300,200,300,200],
función(){ this.release();
);
devolver falso;
})
);
$('#interfaz').show();
});
</script>
</cabeza>
<cuerpo>
<div id="exterior">
<div>
<div>
<h1>Jcrop - Animaciones/Transiciones</h1>
<img src="demo_files/sago.jpg" id="destino" />
<div id="interfaz" estilo="margen: 1em 0;"></div>
<div><label><input type="checkbox" id="fadetog" /> Habilitar desvanecimiento (bgFade: true)</label></div>
<div><label><input type="checkbox" id="shadetog" /> Utilice un sombreador experimental (sombra: verdadero)</label></div>
<p id="shadetxt" style="display:none; color:#900;">
<b>Sombreador experimental activo.</b>
Jcrop ahora incluye un modo de sombreado que facilita la construcción
Instancias de Jcrop más transparentes. El sombreador experimental es menor.
robusto que el método de sombreado predeterminado de Jcrop y solo debe usarse
Se utiliza si necesita esta funcionalidad.
</p>
<p>
<b>Animación/Transiciones.</b>
Demostración del método API animateTo y transiciones para bgColor
y las opciones bgOpacity La decoloración del color requiere la inclusión de John Resig.
jQuery <a href="http://plugins.jquery.com/project/color">Color
Complemento de animaciones</a>. Si no está incluido, los colores no se desvanecerán.
</p>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Inicio de Jcrop</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">Manual (Documentos)</a>
</div>
</div>
</div>
</div>
</cuerpo>
</html>
/Jcrop/WebContent/tapmodo-Jcrop/demos/tutorial5.html
Copie el código de código de la siguiente manera:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Estricto//ES"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<cabeza>
<meta http-equiv="tipo de contenido" content="text/html;charset=UTF-8" />
<title>Jcrop » Tutoriales » Demostración de API</title>
<script src="../js/jquery.min.js" type="text/javascript"></script>
<script src="../js/jquery.Jcrop.js" type="text/javascript"></script>
<enlace rel="hoja de estilo" href="../css/jquery.Jcrop.css" tipo="texto/css" />
<enlace rel="hoja de estilo" href="demo_files/demos.css" type="text/css" />
<tipo de estilo="texto/css">
.optdual { posición: relativa }
.optdual .offset { posición: absoluta izquierda: 18em }
.optlist etiqueta { ancho: 16em; pantalla: bloque }
#dl_links { margen superior: .5em }
</estilo>
<tipo de script="texto/javascript">
jQuery(función($){
// La variable jcrop_api contendrá una referencia al
// API de Jcrop una vez que se crea una instancia de Jcrop.
var jcrop_api;
// En este ejemplo, dado que Jcrop puede adjuntarse o separarse
// por capricho del usuario, he incluido la llamada en una función
initJcrop();
// La función es bastante simple
función initJcrop()//{{{
{
// Ocultar cualquier elemento de la interfaz que requiera Jcrop
// (Esto es para la parte de la interfaz de usuario local).
$('.requiresjcrop').hide();
//Invoca Jcrop de forma típica
$('#objetivo').Jcrop({
onRelease: lanzamientoVerificar
},función(){
jcrop_api = esto;
jcrop_api.animateTo([100,100,400,300]);
// Configura y muestra la interfaz para "habilitado"
$('#can_click,#can_move,#can_size').attr('marcado','marcado');
$('#ar_lock,#size_lock,#bg_swap').attr('checked',false);
$('.requiresjcrop').show();
});
};
//}}}
// Usa la API para encontrar dimensiones de recorte
// Luego genera una selección aleatoria
// Esta función es utilizada por los botones setSelect y animateTo
// Principalmente con fines de demostración
función obtenerAleatorio() {
var dim = jcrop_api.getBounds();
devolver [
Math.round(Math.random() * tenue[0]),
Math.round(Math.random() * tenue[1]),
Math.round(Math.random() * tenue[0]),
Math.round(Math.random() * tenue[1])
];
};
// Esta función está vinculada al controlador onRelease...
// En determinadas circunstancias (como si configura minSize
// y aspectoRatio juntos), puedes perder sin darte cuenta
// la selección. Esta devolución de llamada vuelve a permitir la creación de selecciones.
// en tal caso. Aunque la necesidad de hacer esto se basa en un
// comportamiento con errores, se recomienda atrapar de alguna manera
// la devolución de llamada onRelease si usas enableSelect: false
función liberarCheck()
{
jcrop_api.setOptions({allowSelect: verdadero});
$('#can_click').attr('checked',false);
};
//Adjuntar botones de interfaz
// Esto puede parecer mucho código pero es algo simple
$('#setSelect').click(función(e) {
// Establece una selección aleatoria
jcrop_api.setSelect(getRandom());
});
$('#animateTo').click(función(e) {
// Anima a una selección aleatoria
jcrop_api.animateTo(getRandom());
});
$('#release').hacer clic(función(e) {
// El método de liberación borra la selección.
jcrop_api.release();
});
$('#disable').hacer clic(función(e) {
// Deshabilitar la instancia de Jcrop
jcrop_api.disable();
// Actualiza la interfaz para reflejar el estado deshabilitado
$('#enable').show();
$('.requiresjcrop').hide();
});
$('#enable').hacer clic(función(e) {
// Volver a habilitar la instancia de Jcrop
jcrop_api.enable();
// Actualiza la interfaz para reflejar el estado habilitado
$('#enable').hide();
$('.requiresjcrop').show();
});
$('#rehook').hacer clic(función(e) {
// Este botón es visible cuando Jcrop ha sido destruido
// Realiza la reconexión y actualiza la UI
$('#rehook,#enable').hide();
initJcrop();
$('#unhook,.requiresjcrop').show();
devolver falso;
});
$('#desenganchar').click(función(e) {
// Destruye el widget Jcrop, restaura el estado original
jcrop_api.destroy();
// Actualiza la interfaz para reflejar el estado no conectado
$('#unhook,#enable,.requiresjcrop').hide();
$('#rehook').show();
devolver falso;
});
// Conecta los tres botones de intercambio de imágenes
$('#img1').hacer clic(función(e) {
jcrop_api.setImage('demo_files/sago.jpg');
jcrop_api.setOptions({ bgOpacity: .6 });
devolver falso;
});
$('#img2').hacer clic(función(e) {
jcrop_api.setImage('demo_files/pool.jpg');
jcrop_api.setOptions({ bgOpacity: .6 });
devolver falso;
});
$('#img3').click(función(e) {
jcrop_api.setImage('demo_files/sago.jpg',función(){
this.setOptions({
bgOpacidad: 1,
Imagen exterior: 'demo_files/sagomod.jpg'
});
this.animateTo(getRandom());
});
devolver falso;
});
// Las casillas de verificación simplemente configuran opciones según su valor marcado
// Las opciones se cambian pasando un nuevo objeto de opciones
// Además, para evitar comportamientos extraños, inicialmente se comprueban
// Esto coincide con el estado inicial predeterminado de Jcrop
$('#can_click').cambiar(función(e) {
jcrop_api.setOptions({ enableSelect: !!this.checked });
jcrop_api.focus();
});
$('#can_move').cambiar(función(e) {
jcrop_api.setOptions({ enableMove: !!this.checked });
jcrop_api.focus();
});
$('#can_size').cambiar(función(e) {
jcrop_api.setOptions({ enableResize: !!this.checked });
jcrop_api.focus();
});
$('#ar_lock').cambiar(función(e) {
jcrop_api.setOptions(this.checked?
{aspectRatio: 4/3}: {aspectRatio: 0});
jcrop_api.focus();
});
$('#size_lock').cambiar(función(e) {
jcrop_api.setOptions(esto.marcado? {
tamaño mínimo: [80, 80],
Tamaño máximo: [350, 350]
}: {
tamaño mínimo: [0, 0],
Tamaño máximo: [0, 0]
});
jcrop_api.focus();
});
});
</script>
</cabeza>
<cuerpo>
<div id="exterior">
<div>
<div>
<h1>Jcrop - Demostración de API</h1>
<img src="demo_files/sago.jpg" id="destino" />
<div style="margen: .8em 0 .5em;">
<lapso>
<botón id="setSelect">setSelect</botón>
<botón id="animateTo">animateTo</button>
<button id="release">Liberar</button>
<button id="disable">Desactivar</button>
</span>
<button id="enable" style="display:none;">Volver a habilitar</button>
<button id="unhook">¡Destruir!</button>
<button id="rehook" style="display:none;">Adjuntar Jcrop</button>
</div>
<conjunto de campos>
<legend>Alternativas de opciones</legend>
<div>
<label><input type="checkbox" id="ar_lock" />Relación de aspecto</label>
<label><input type="checkbox" id="size_lock" />configuración minSize/maxSize</label>
</div>
<div>
<label><input type="checkbox" id="can_click" />Permitir nuevas selecciones</label>
<label><input type="checkbox" id="can_move" />La selección se puede mover</label>
<label><input type="checkbox" id="can_size" />Selección redimensionable</label>
</div>
</conjunto de campos>
<fieldset style="margen: .5em 0;">
<legend>Cambiar imagen</legend>
<lapso>
<button id="img2">Piscina</button>
<button id="img1">Sagú</button>
<button id="img3">Sagú con imagen exterior</button>
</span>
</conjunto de campos>
<div id="dl_links">
<a href="http://deepliquid.com/content/Jcrop.html">Inicio de Jcrop</a> |
<a href="http://deepliquid.com/content/Jcrop_Manual.html">Manual (Documentos)</a>
</div>
</div>
</div>
</div>
</cuerpo>
</html>