Avatar billede steffen Nybegynder
23. oktober 2006 - 13:57 Der er 10 kommentarer og
1 løsning

Automatisk skalering af clientside image maps

Er der nogen der kender et stykke open source software / script der kan skalere et image map op og ned samtidig med at man skalerer det tilhørende billede? (Softwaren behøver blot at kunne skalere clientside imagemap'et, skalering af selve billedet har jeg fundet tools til).

Teknologi kommer sig ikke så nøje, men det skal i sidste ende afvikles på en Linux boks.
Avatar billede olebole Juniormester
23. oktober 2006 - 13:59 #1
<ole>

Jeg har ikke set et færdigt script til den slags ... det skal du nok ud i at skrive selv  :o|

/mvh
</bole>
Avatar billede steffen Nybegynder
23. oktober 2006 - 14:46 #2
Jeg tror heller ikke det er det helt store, i bund og grund handler det om at parse efter x,y-koordinater og så gange en faktor på hver i forhold til forholdet på før/efter dimensionerne på billederne.

Men at få det dumpet lige ned i turban'en er er ofte at foretrække :-)

BTW: Det er til brug sammen med: http://twiki.org/cgi-bin/view/Plugins/DirectedGraphPlugin
Avatar billede olebole Juniormester
23. oktober 2006 - 15:13 #3
Jeg har ikke tid til at læse det hele igennem, men hvis du bruger SVG til at vise graferne med, kan du vel bare lægge event-handlers direkte på elementerne(?)
Avatar billede steffen Nybegynder
23. oktober 2006 - 18:14 #4
SVG er helt sikkert en mulighed, det er blot ikke alle browsere der kan læse / printe dem endnu - og så har selve "dot" programmet også nogle problemer med fejl i generingen af dem.

Så derfor er det mest interessant for mig at holde fast i PNG'erne, og så prøve at sørge for at map'et bare følger med når der resizes.
Avatar billede jhe-ting Nybegynder
23. oktober 2006 - 21:47 #5
En enkel søgning gav dette resultat:

http://www.siteexperts.com/dhtml/ch9/chapter/part4.asp

hvor jeg fandt dette eksempel. Jeg har ikke testet det, men det ser ud til at være lige det du spurgte om steffen 

/Jesper ;-)

<HTML>
  <HEAD>
      <TITLE>Dynamically Scaling Image Maps</TITLE>
      <SCRIPT LANGUAGE="JavaScript">
        function getMap(elImage) {
            // Be sure that a map is specified for the image.
            if (null != elImage.useMap) {
              // Remove the leading # from the bookmark.
              var strMap = elImage.useMap.substring(1);
              // Return the element with the specified name.
              return document.all[strMap];
            }
            else
              return null;
        }

        function zoomImage(elImage, amount) {
            // Expand the image the specified amount.
            var elMap = getMap(elImage);
            elImage.width *= amount;
            elImage.height *= amount;
            // If an image map is available, scale it too.
            if (null != elMap) {
              for (var intLoop = 0; intLoop < elMap.areas.length;
                    intLoop++) {
                  var elArea = elMap.areas[intLoop];
                  // Break the coordinates string into an array.
                  var coords = elArea.coords.split(",");
                  var scaledCoords = "";
                  // Rebuild the new scaled string.
                  for (coord in coords) {
                    scaledCoords += (coords[coord] * amount) + ",";
                  }

                  // Put the scaled coordinates back into the map.
                  elArea.coords = scaledCoords;
              }
            }
        }

        function swapButtons(b1, b2) {
            // Swap the enabled/disabled buttons.
            document.all[b1].disabled = true;
            document.all[b2].disabled = false;
        }
      </SCRIPT>
  </HEAD>
  <BODY>
      <P>
        <INPUT TYPE=BUTTON VALUE="Zoom In"
            ONCLICK="zoomImage(document.all.img1, 2);
              swapButtons(`zoomin', 'zoomout');"
            ID="zoomin">
        <INPUT TYPE=BUTTON VALUE="Zoom Out"
            ONCLICK="zoomImage(document.all.img1, .5);
              swapButtons(`zoomout', 'zoomin');"
            ID="zoomout" DISABLED>
      </P>
      <P>
        <IMG SRC="img001.gif" WIDTH=200 HEIGHT=200
            ID="img1" USEMAP="#map1">
        <MAP NAME="map1">
            <AREA SHAPE="POLYGON"
              COORDS="92, 140, 126, 114, 155, 139, 124, 163"
              HREF="home.htm">
            <AREA SHAPE="CIRCLE" COORDS="30, 105, 30" HREF="cool.htm">
            <AREA SHAPE="RECT" COORDS="62, 28, 200, 79"
              HREF="dhtml.htm">
        </MAP>
      </P>
  </BODY>
</HTML>
Avatar billede steffen Nybegynder
23. oktober 2006 - 22:06 #6
Øijs, det er tæt på i hvert tilfælde, tak for det :-)

Jeg kan se man bliver hjulpet lidt af Maps elementet, og af at der zoomes lige meget på begge led.

Gad vide om der egentligt findes en tilsvarende Map klasse i CPAN? Det kunne man godt forestille sig.

Jeg vil stille spørgsmålet en gang til og lidt mere specifikt i "Andre" kategorien (Perl), jeg vil jo egentligt gerne serverside fra:

        <IMG SRC="img001.gif" WIDTH=200 HEIGHT=200
            ID="img1" USEMAP="#map1">
        <MAP NAME="map1">
            <AREA SHAPE="POLYGON"
              COORDS="92, 140, 126, 114, 155, 139, 124, 163"
              HREF="home.htm">
            <AREA SHAPE="CIRCLE" COORDS="30, 105, 30" HREF="cool.htm">
            <AREA SHAPE="RECT" COORDS="62, 28, 200, 79"
              HREF="dhtml.htm">
        </MAP>

til det nye map, med en evt. "skæv" skalering (fx WIDTH=100 HEIGHT=300)

Jeg kan godt se at det vil give lidt problemer med "CIRCLE", men de andre skulle det være muligt at skalere "skævt".

Tak for det i hvert tilfælde!
Avatar billede steffen Nybegynder
23. oktober 2006 - 22:09 #7
Avatar billede olebole Juniormester
24. oktober 2006 - 08:32 #8
okay - jeg må have misforstået ... jeg troede, du allerede brugte SVG. Problemet med image-maps er jo, de er på vej ud (udgår i næste markup-standard), så det er nok ikke så fikst at basere nye applikationer på den teknik  =)
Avatar billede steffen Nybegynder
24. oktober 2006 - 08:49 #9
Øijs, den var værre. http://www.w3.org/TR/html401/struct/objects.html#h-13.6 nævner tilsyneladende ikke at der er en deprecation på vej, vil du ikke lige lægge et link?

Ved du hvad man skal bruge i stedet - er det noget der virker i moderne browsere allerede?
Avatar billede olebole Juniormester
24. oktober 2006 - 10:39 #10
XHTML2.0 har hverken img-elementer eller image-maps. I stedet for img-elementer kan du sætte en data-src på alle elementer - og derved gøre dem til billeder.
Image-maps er der mig bekendt ikke planlagt afløsninger for  :)
Avatar billede olebole Juniormester
24. oktober 2006 - 10:43 #11
Det var vist ikke helt korrekt. Der er faktisk påtænkt en afløser for image-maps i XHTML2.0:
    http://www.w3.org/TR/xhtml2/mod-csImgMap.html#s_csImgMapmodule
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester