begin process at 2012 02 05 23:10:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > ZOOM ZOOM ZOOM

ZOOM ZOOM ZOOM


 Information sur la source

Note :
7 / 10 - par 2 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Classé sous :zoom, image zoom, loupe Niveau :Débutant Date de création :18/02/2009 Date de mise à jour :11/08/2010 23:39:22 Vu / téléchargé :8 617 / 962

Auteur : kazma

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
on peut
- zoomer avec la molette de la souris l'image zoom a l'endroit ou se trouve le pointer de la souris
- sélectionner une partie de l'image avec un rectangle clic droit de souris le zoom se fera dans la zone du rectangle
- deplacer l'image (drag) clic gauche de la souris
- un bouton raz

compatible ie 6 a 8 ff opera ..etc

Source

  • var tour=3;
  • var cz=5
  • function disableselecte(e){
  • return false;
  • }
  • function enableselecte(e){
  • return true;
  • }
  • function souris(s){
  • var dde=(navigator.vendor) ? document.documentElement.childNodes[1] : document.documentElement;
  • setX =((navigator.appName.substring(0,3)=="Mic") ? event.clientX : s.clientX) + dde.scrollLeft;
  • setY =((navigator.appName.substring(0,3)=="Mic") ? event.clientY : s.clientY) + dde.scrollTop;
  • return false;
  • }
  • (navigator.appName.substring(0,3)=="Net") ? document.documentElement.addEventListener("mousemove", souris, false) : document.documentElement.attachEvent('onmousemove', souris);
  • function cadrezoom(){
  • if(cz==5){
  • oper=adi.offsetWidth/adi.offsetHeight;
  • px=setX;
  • py=setY;
  • adi=document.getElementById('divim');
  • adi.parentNode.appendChild(document.createElement('div')).setAttribute("id",'cadre');
  • cd=document.getElementById('cadre');
  • cd.style.position='absolute';
  • cd.style.top=setY-adi.parentNode.offsetTop+"px";
  • cd.style.left=setX-adi.parentNode.offsetLeft+"px";
  • cd.style.height = 10+"px";
  • cd.style.width = 10+"px";
  • cd.style.minWidth =20+"px";
  • cd.style.minHeight =20+"px";
  • cd.style.backgroundColor='black';
  • if(document.all && !window.opera){
  • cd.style.filter = 'alpha(opacity=25)';
  • }
  • else{
  • cd.style.opacity = 0.3;
  • }
  • cz=0
  • cd.setAttribute("onmouseup","tour=2");
  • }
  • if(tour==2){
  • document.onmousedown=enableselecte;
  • cz=5;
  • bour=(adi.offsetLeft-cd.offsetLeft)/adi.offsetWidth;
  • boul=(adi.offsetTop-cd.offsetTop)/adi.offsetHeight;
  • adi.style.height=adi.offsetHeight*(adi.parentNode.offsetHeight/cd.offsetHeight)+'px';
  • adi.style.width=adi.offsetHeight*oper+'px';
  • adi.style.left=bour*adi.offsetWidth+'px';
  • adi.style.top=boul*adi.offsetHeight+'px';
  • cd.parentNode.removeChild(cd);
  • return false;
  • }
  • cd.style.height = (cd.offsetHeight+(setY-py))+"px";
  • cd.style.width = (cd.offsetWidth)+(setX-px)+"px";
  • document.onmousedown=disableselecte;
  • px=setX;
  • py=setY;
  • setTimeout(cadrezoom,15);
  • }
  • function dirizoom(e){
  • var delta = 0;
  • if (!e) e = window.event;
  • if (e.wheelDelta) {
  • delta = e.wheelDelta/120;
  • } else if (e.detail) {
  • delta = -e.detail/3;
  • }
  • if(delta<0){
  • val=-0.15;
  • }
  • else{
  • val=0.15;
  • }
  • adi=document.getElementById('divim');
  • var dirle=(adi.offsetWidth/2)-(setX-(adi.parentNode.offsetLeft+adi.offsetLeft));
  • var dirto=(adi.offsetHeight/2)-(setY-(adi.parentNode.offsetTop+adi.offsetTop));
  • var lf=adi.offsetWidth;
  • var rf=adi.offsetHeight;
  • adi.style.width=lf+(lf*val)+'px';
  • adi.style.height=rf+(rf*val)+'px';
  • adi.style.left=adi.offsetLeft-((adi.offsetWidth-lf)/2)+(dirle*val)+'px';
  • adi.style.top=adi.offsetTop-((adi.offsetHeight-rf)/2)+(dirto*val)+'px';
  • }
  • function sp(){
  • if(tour==2){
  • document.onmousedown=enableselecte;
  • tour=3;
  • document.getElementById('divim').style.cursor='auto';
  • return false;
  • }
  • if(tour==3){
  • px=setX;
  • py=setY;
  • tour=0;
  • adi=document.getElementById('divim');
  • }
  • adi.style.left=(adi.offsetLeft+setX-px)+'px';
  • adi.style.top=(adi.offsetTop+setY-py)+'px';
  • document.onmousedown=disableselecte;
  • px=setX;
  • py=setY;
  • setTimeout(sp,10);
  • }
  • function dispatche(evt){
  • var evt = evt || window.event;
  • adi=document.getElementById('divim');
  • if(evt.button == 0 || evt.button == 1){
  • adi.style.cursor='move';
  • sp()
  • }
  • if(evt.button == 2){
  • cz=5
  • cadrezoom();
  • }
  • }
  • function selecte(ev){
  • (navigator.appName.substring(0,3)=="Mic") ? event.returnValue = false : ev.preventDefault();
  • }
  • function raz(){
  • adi=document.getElementById('divim');
  • oper=adi.offsetWidth/adi.offsetHeight;
  • adi.style.height=400+'px';
  • adi.style.width=oper*400+'px';
  • adi.style.left=((adi.parentNode.offsetWidth-adi.offsetWidth)/2)+'px';
  • adi.style.top=((adi.parentNode.offsetHeight-adi.offsetHeight)/2)+'px';
  • }
  • function init(){
  • adi=document.getElementById('divim')
  • if(navigator.appName.substring(0,5)=="Micro"){
  • adi.attachEvent('onmousedown',function(){dispatche(event)});
  • adi.attachEvent('onmousewheel',dirizoom);
  • adi.attachEvent('onmousewheel', selecte)
  • }
  • else{
  • if (navigator.userAgent.indexOf("Firefox") != -1){
  • adi.addEventListener('DOMMouseScroll', dirizoom, false);
  • adi.addEventListener("DOMMouseScroll", selecte, false)
  • }
  • else{
  • adi.addEventListener('mousewheel', dirizoom, false);
  • adi.addEventListener("mousewheel", selecte, false)
  • }
  • adi.setAttribute("onmousedown", "dispatche(event)", false)
  • }
  • }
var tour=3;
var cz=5

function disableselecte(e){
return false;
}
function enableselecte(e){
return true;
}

function souris(s){
var dde=(navigator.vendor) ? document.documentElement.childNodes[1] : document.documentElement;
setX =((navigator.appName.substring(0,3)=="Mic") ? event.clientX : s.clientX) + dde.scrollLeft;
setY =((navigator.appName.substring(0,3)=="Mic") ? event.clientY : s.clientY) + dde.scrollTop;
return false;
}

(navigator.appName.substring(0,3)=="Net") ? document.documentElement.addEventListener("mousemove", souris, false) : document.documentElement.attachEvent('onmousemove', souris);

function cadrezoom(){
if(cz==5){
oper=adi.offsetWidth/adi.offsetHeight;
px=setX;
py=setY;
adi=document.getElementById('divim');
adi.parentNode.appendChild(document.createElement('div')).setAttribute("id",'cadre');
cd=document.getElementById('cadre');
cd.style.position='absolute';
cd.style.top=setY-adi.parentNode.offsetTop+"px";
cd.style.left=setX-adi.parentNode.offsetLeft+"px";
cd.style.height = 10+"px";
cd.style.width = 10+"px";
cd.style.minWidth  =20+"px";
cd.style.minHeight =20+"px";
cd.style.backgroundColor='black';
if(document.all && !window.opera){ 
cd.style.filter = 'alpha(opacity=25)';
} 
else{ 
cd.style.opacity = 0.3;
}
cz=0
cd.setAttribute("onmouseup","tour=2");
}
if(tour==2){
document.onmousedown=enableselecte;
cz=5;
bour=(adi.offsetLeft-cd.offsetLeft)/adi.offsetWidth;
boul=(adi.offsetTop-cd.offsetTop)/adi.offsetHeight;
adi.style.height=adi.offsetHeight*(adi.parentNode.offsetHeight/cd.offsetHeight)+'px';
adi.style.width=adi.offsetHeight*oper+'px';
adi.style.left=bour*adi.offsetWidth+'px';
adi.style.top=boul*adi.offsetHeight+'px';
cd.parentNode.removeChild(cd);
return false;
}
cd.style.height = (cd.offsetHeight+(setY-py))+"px";
cd.style.width = (cd.offsetWidth)+(setX-px)+"px";
document.onmousedown=disableselecte;
px=setX;
py=setY;
setTimeout(cadrezoom,15);
}

function dirizoom(e){
var delta = 0;
if (!e) e = window.event;
if (e.wheelDelta) {
delta = e.wheelDelta/120; 
} else if (e.detail) {
delta = -e.detail/3;
}
if(delta<0){
val=-0.15;
}
else{
val=0.15;
}
adi=document.getElementById('divim');
var dirle=(adi.offsetWidth/2)-(setX-(adi.parentNode.offsetLeft+adi.offsetLeft));
var dirto=(adi.offsetHeight/2)-(setY-(adi.parentNode.offsetTop+adi.offsetTop));
var lf=adi.offsetWidth;
var rf=adi.offsetHeight;
adi.style.width=lf+(lf*val)+'px';
adi.style.height=rf+(rf*val)+'px';
adi.style.left=adi.offsetLeft-((adi.offsetWidth-lf)/2)+(dirle*val)+'px';
adi.style.top=adi.offsetTop-((adi.offsetHeight-rf)/2)+(dirto*val)+'px';
}

function sp(){
if(tour==2){
document.onmousedown=enableselecte;
tour=3;
document.getElementById('divim').style.cursor='auto';
return false;
}
if(tour==3){
px=setX;
py=setY;
tour=0;
adi=document.getElementById('divim');
}
adi.style.left=(adi.offsetLeft+setX-px)+'px';
adi.style.top=(adi.offsetTop+setY-py)+'px';
document.onmousedown=disableselecte;
px=setX;
py=setY;
setTimeout(sp,10);
}

function dispatche(evt){

var evt = evt || window.event;
adi=document.getElementById('divim');
if(evt.button == 0 || evt.button == 1){
adi.style.cursor='move';
sp()
}
if(evt.button == 2){
cz=5
cadrezoom();
}
}

function selecte(ev){
(navigator.appName.substring(0,3)=="Mic") ? event.returnValue = false : ev.preventDefault();
}

function raz(){
adi=document.getElementById('divim');
oper=adi.offsetWidth/adi.offsetHeight;
adi.style.height=400+'px';
adi.style.width=oper*400+'px';
adi.style.left=((adi.parentNode.offsetWidth-adi.offsetWidth)/2)+'px';
adi.style.top=((adi.parentNode.offsetHeight-adi.offsetHeight)/2)+'px';
}

function init(){
adi=document.getElementById('divim')
if(navigator.appName.substring(0,5)=="Micro"){
adi.attachEvent('onmousedown',function(){dispatche(event)});
adi.attachEvent('onmousewheel',dirizoom);
adi.attachEvent('onmousewheel', selecte)
}
else{
if (navigator.userAgent.indexOf("Firefox") != -1){
adi.addEventListener('DOMMouseScroll', dirizoom, false);
adi.addEventListener("DOMMouseScroll", selecte, false)
}
else{
adi.addEventListener('mousewheel', dirizoom, false);
adi.addEventListener("mousewheel", selecte, false)
}
adi.setAttribute("onmousedown", "dispatche(event)", false)
}
}

 Conclusion

sa maaaarche

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

22 février 2009 14:18:28 :
un nouveau bouton pour zoomer par selection d'une zone avec un cardre
23 février 2009 16:06:31 :
corection pour la fonction cadrezoom
25 février 2009 16:40:04 :
rajout dans la fonction dirzoom la possibiliter de zoomer dezoomer et deplacer l'image avec les trois boutons de la sourie
10 octobre 2009 17:37:13 :
utilisation unique de la souris plus optimisation
10 octobre 2009 20:25:41 :
optimisation
10 décembre 2009 23:12:35 :
mis a jour
11 août 2010 23:39:22 :
mise a jour dom pour webkit plus petite mise au propre

 Sources du même auteur

Source avec Zip Source avec une capture PETIT LOGICIEL DE DESSIN, RETOUCHE AVEC CANVAS
Source avec Zip Source avec une capture DRAG & DROP VERS UN CANVAS
Source avec Zip Source avec une capture DIAPO EN CSS 3D
Source avec Zip CONVERTISSEUR D'IMAGE BASE 64
Source avec Zip Source avec une capture HTML5 PLAYER

 Sources de la même categorie

Source avec Zip Source avec une capture PETIT LOGICIEL DE DESSIN, RETOUCHE AVEC CANVAS par kazma
Source avec Zip Source avec une capture CALCULATRICE HEURE par m22001111
Source avec Zip Source avec une capture DRAG & DROP VERS UN CANVAS par kazma
Source avec Zip ROTATION D'UNE IMAGE, ANIMATION par william voirol
Source avec Zip FRACTALES, FOUGÈRE, TRIANGLE, CARRÉ par william voirol

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CENTRAGE D'IMAGE AVEC PETIT EFFET par kazma
Source avec Zip Source avec une capture LOUPE ET ZOOM par kazma
Source avec Zip Source avec une capture [ZI] ZOOM (LOUPE) SUR IMAGE par Bul3
Source avec Zip Source avec une capture AFFICHAGE D'IMAGE par kazma
Source avec Zip Source avec une capture LOUPE SUR IMAGE AU PASSAGE DE LA SOURIS ! par adelami

Commentaires et avis

Commentaire de mickaelpfr le 19/02/2009 10:37:19

Bonjour, ça faisait longtemps que je n'avais pas vu une source vraiment utile :)
a coté de ça , quelques options d'ergonomies a améliorer exemple :
- création d'une sélection sur la map qui auto-zoom en proportion de la zone sélectionnée
- Ecrire une méthode objet plutôt qu'un suite de fonction sans commentaires ;)

Testé sous FF3 rien à dire ça marche :)

Commentaire de kazma le 22/02/2009 14:24:13 administrateur CS

- création d'une sélection sur la map qui auto-zoom en proportion de la zone sélectionnée

c'est fait

pour l'ergonomie peut etre une autre fois . et pour des methodes a voir

Commentaire de Mado9 le 22/02/2009 17:27:04

Merci, ce script est super !!!
Justement ce que j'ai cherché pendant des jours.
Je vais de suite essayer de l'intégrer dans mes pages.

Commentaire de jtoto le 23/02/2009 08:52:06 7/10

bon script mais necessaire quelques amélioration dans son utilisation:
-il serait plus interessant de centrer le zoom sur la position initiale de la souris
-le cadrezoom ne fonctionne pas très bien quand il fonctionne il est très bien mais souvent une erreur se produit ligne 99 argument non valide dans le fichier zoom.js
-garder la commande cadrezoom active après un raz comme pour les autres commande
A part ces quelques remarques ce script est très interessant

Commentaire de LeFauve42 le 23/02/2009 11:51:16 7/10

Bonjour,

Script interessant, mais quelques maladresses dans le code (liste non exhaustive) :
>function disableselect(e){
>.../...
>function enableselecte(e){
>.../...

Avec un 'e', sans 'e'... Un peu de consistance dans le nommage simplifie la comprehension et la maintenance.

> function tarto(s){

Cette fonction est appelee sur le document.onmove. Peut-etre un nom un peu plus parlant serait bien aussi.

>if(navigator.appName.substring(0,3)=="Net"){
>.../...
>}
>if(navigator.appName.substring(0,3)!="Net"){
>.../...

Tu n'as jamais entendu parler d'un truc extra qui s'appelle "else" :o) (ok, je taquine... desole :o) ).

> document.documentElement.onmousemove=tarto;

Ca fait quelques annees qu'il est deconseille d'assigner des event handlers de cette facon (que se passe-t-il si sur la meme page un autre script a bseoin du meme event?).
Il vaut mieux utiliser addEventListener ou attachEvent sur les vieux navigateurs.

> setTimeout("dirizoom()",15);

Je pense que tu peux utiliser directement un objet de type fonction pour setTimeout plutot que de passer une chaine. Ca t'economise une instantiation du parseur JavaScript dont tu n'as pas vraiment besoin.
(La ca donnerai setTimeout(dirizoom,15);)

Sinon d'une maniere generale, est-ce que ton script ne fait pas (en moins evolue) la meme chose qu'Ajax SeaDragon ?

C'est bien pour les curieux qui voudraient apprendre comment marchent ce genre de programmes, mais je conseillerais de telecharger le (gratuit) DeepZoomComposer, et d'utiliser l'export Ajax Seadragon. DeepZoomComposer est plutot concu pour SilverLight mais l'export Ajax donne un script standalone presque aussi "smooth".
Le principal interet etant la possibilite d'utiliser des images tres grandes (plusieurs dizaines de millions de megapixels) dont seules seront envoyees au client les parties affichees (comme google maps).

Je te met quand meme une bonne note pour l'effort et l'interet didactique de la source.

Eric

Commentaire de kazma le 23/02/2009 16:18:36 administrateur CS

jtoto
-le cadrezoom ne fonctionne pas très bien

c'est bon c'est corrige

LeFauve42

j'ai un peut modifier

-Je te met quand même une bonne note pour l'effort et l'intérêt didactique de la source.

merci ( mais c'est pas le maximum lol)

-C'est bien pour les curieux qui voudraient apprendre comment marchent ce genre de programmes

je suis curieux (ça peut  être énervant dalleur)

++


Commentaire de saadellaoui le 31/05/2011 12:47:35

slt,je veux faire un deplacement et un redimensionnement des images dans un div
ce ci semble a ce que tu a fait dans le cadre de zoom
tu zoom ds un cadre et pas ds tte la fenetre
Merci pr ton aide

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Zoom genre loupe sur image [ par Annadrill ] Bonjour, voilà, j'essaie de réaliser quelque chose de ce genre http://www.magictoolbox.com/magicmagnify/ mais je ne sais pas par ou commencer, m'y co Zoom sur graphique en javascript ou php [ par nico00 ] Bonjour à tous j'ai fais un programme qui affiche des signaux en php voici le code: <?php restore_error_handler(); error_reporting(E_ALL & ~E_STRICT); Ouvrir une image à partir d'une zone cliquable avec un effet de zoom? [ par bahh66 ] Bonjour, je pose cette question ici mais je ne suis pas sur d'être au bon endroit... Je dois réaliser un cd-rom pour une présentation de musée. J'ai Zoom A+ et A- IE ou firefox (ctrl + - ou ctrl + -) dans une page web (et idem Volume) [ par thierryd75 ] Bonjour, Je suis en train de développer un site web et je cherche le moyen d'augmenter le zoom (75 - 100% - 125 %) de ma page via ma page pour la vis Zoom [ par fuksan ] Bonjour, J'ai trouvé une multitude de Zoom en cherchant dans le site. Cependant, je n'ai pas réussi à trouver exactement celui que je cherche. En fa Zoom image [ par etu54 ] Bonjour, De par mes études je suis dans la programmation web depuis 1 an environ. Cependant le javascript m'est encore assez inconnu mis a part les [XML/SVG] zoom sur plusieurs éléments [ par BARIS69330 ] Bonjour, je bosse actuellement sur du svg et il me faut faire un zoom sur plusieurs evenements quand je passe la souris dessus grâce aux fonctions onm script pour zoom (comme google maps) [ par Rose6 ] salut, je repose ma question car je n'ai obtenu aucune réponse satisfaisante... connaissez vous un script pour zoomer et se déplacer sur une image ( comportement de google chrome "TRES ETRANGE" [ par WiDOC ] Bonjour, alors voila j'ai un bug plutôt "hors du commun" je trouve. en fait c'est peut être même pas un bug mais un fonctionnement de google chrome q Image SVG coupée lors d'un zoom [ par Pitus38 ] Bonjour à tous, J'ai un petit soucis avec mon image SVG, je gère la fonction mousewheel pour agrandir et réduire en zoomant et dézoomant avec la mole


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales