26. januar 2012 - 20:47 Der er 18 kommentarer og
1 løsning

Edit en IMG tag og hent height og width

Hej

Jeg har en Webbrowser som viser en HTML-side. Denne side genereres lokalt og skal kun vises lokalt. Ergo: SQL og PHP er ikke brugbare i dette tilfælde.

Derfor bruger jeg et (ligeså lokalt genereret JavaScript Array, hvor den relative postion bestememr hvad som vises. Siden har 2 modi (modus/modi) EDIT og DISPLAY.

Alt som vises er indsat i en Table // TD tag'en. I Disply modus er det TD'ens style som bestemmer visningen. Samtidig er det underliggende EDIT (<input tag) sat som nonvisible.)

eks:

<TD width="xxxpx" style="...style paramtre"; visible:block; " id='idnavn'>felt</TD>
<TD width="xxxpx" style="...style paramtre"; visible:none; "><input id='idnavna' width='xxx'....value='felt' ></input></TD>

(PS: der er sandsynligvis syntaks fejl i koden, men det er for at vise princippet - ikke koden !)

og så styrer jeg Editmode / diasplaymode via JavaScript. Det fungerer perfekt.

Min problem er at jeg skal editere billeder. I display modus skal et museklik vise et stor billede af det billedet nu viser. Det virker nogenlunde (ikke tilfredstillende endnu men det har jeg styr på.)

I edit mode skal javascript-funktionen kunne hente et billede fra et forudvalgt bibliotek (LOKALT), trække bredde og højde ud fra billedet og gemme navnet (<img src=" denne her " .... >) i tag'en, indsætte højde og bredde så billedet vises korrekt. Evt. også med ALT- teksten.

Hvordan gør jeg det ? (i JavaScript /  onclick i Editmodus )

Kristian
Avatar billede olebole Juniormester
26. januar 2012 - 20:58 #1
<ole>

Hvis du afholder dig fra at sætte højde og bredde på billedet, vises det i korrekt størrelse og i korrekte proportioner. Hvis du allerede har editeret et andet billede og derfor sat dimensionerne, sletter du dem bare igen med JS, inden du loader det nye billede:

IMG.style.width = "";
IMG.style.height = "";

/mvh
</bole>
Avatar billede pstidsen Novice
26. januar 2012 - 21:19 #2
Nu læste jeg at PHP og MySQL ikke e brugbart lokalt... Du kan jo bare bruge Apache localhost ;) http://www.apache.org/dyn/closer.cgi
26. januar 2012 - 21:41 #3
HEJ

TAk for responsa.

Jeg har en fornemmelse af at jeg hellere må uddybe lidt mere: (PSTIDSEN)

Fra en meget intelligent base (Delphi 7) skabes en HOVED-side (HTML), som vises i en TWebbrowser (Delphi komponent). Jeg har (efter en masse eksperimenteren) fundet frem til en måde at kommunikere (begge veje - kald det "mikro-AJAX") og det gør at jeg ikke kan bruge SQL , PHP, ASP eller noget andet.

Min "program -aftager" ønskede et program hvor "han" selv kunne være med til at udforme skærmbillederne nu og senere og "han" ved lidt (meget lidt nu..) om HTML / CSS og JavaScript. Så derfor valgte jeg at lave det sådan. Og det er jo også et ubestrideligt faktum at HTML er skabt til at vise smukke sider (HTML-sider evt. kombineret med CSS / XML) hvor delphi er bundet til sine forme og de er ikke nødvendigvis lige smukke. Derfor. Men APACHE ... For ham er det en Indianerstamme i USA...

KR
Avatar billede pstidsen Novice
26. januar 2012 - 21:46 #4
Jeg afmelder. Det her er LANGT over mit programmeringsniveau :)
Avatar billede olebole Juniormester
26. januar 2012 - 21:52 #5
@snestrup2000: Hvad med #1?
26. januar 2012 - 22:26 #6
HEJ,

OLEBOLE

Sorry, jeg glemte dig i skyndingen.

Der er en mulighed der. Det kunne laves med fast højde og bredde.

Jeg havde tænkt mig noget i stil med

EDIT-MODUS:

<img src='bilde.jpg" height='yy' width='xx' onclick='editpict()'; >

Hvor editpic() åbner en lokal bib-mappe (forudbestemt), vælger billedtyper (eks. jpg /og eller png), og et JS-script skifter billednavnet (<img src=" denne her " og i JavaScript Array'et (der fungerer som "JavaScript-lokal-sql-base" (overføres senere til D7-basen) når jeg så trykker SAVE.

Men kan jeg det i JavaScript eller må jeg over i JQuery ?

Her er jeg i tvivl ...

Kr
Avatar billede olebole Juniormester
26. januar 2012 - 22:47 #7
Der er en mulighed der. Det kunne laves med fast højde og bredde. >> Mit forslag var nu det modsatte af 'fast højde og bredde'  =)

jQuery er JavaScript. Men alt, hvad du kan lave med jQuery, kan du også lave uden. Ofte i bedre kode og langt mere effektivt - nogle gange hurtigere skrevet - andre gange ikke.
26. januar 2012 - 22:57 #8
HEj,

Det sjove er, at mens jeg ventede på dit svar kom der et af de her lyse indfald ...

(Og uden for nummer:
Vidste du at det bedste tidspunkt for lyse indfald er under et kæmpe druk-gilde ?

Svar: Jo- Alkohol omdannes i kroppen til eddike-syre og eddike-syre er som bekendt kalk-opløsende...) (hehe)

Gik ind på nettey og søgte efter OPENDIALOG for Javascript. Og Heureka der var den. Stripning af overflødige karakterer i returkoden var nem og så har jeg filnavnet (og biblioteket). Den rette placering i <img src='' ..> skulle være "PEACE of CAKE"  ("Fred på kagen")...

Men har du et forslag til variabel højde og ditto bredde ??

KR
27. januar 2012 - 14:05 #9
HEJ OleBole,

Efter endnu et lyst indfald (nej jeg er ikke kronisk dranker (heheh) prøvede jeg et par ideer og minsandten om det ikke fungerede.

Enten er jeg dygtig (eller også er jeg bare <censur> heldig).

I objektivitetens hellige navn vælger jeg det første (naturligvis) ..

Nu kan jeg editere billeder med variabel størrelse (og hvis jeg udvider mine udvælgelses-kriterier også andre typer end JPG /JPEG.

Og da jeg ved du ikke samler point har jeg tildelt pointene til mig selv.  OK ?

Kristian
Avatar billede olebole Juniormester
27. januar 2012 - 14:35 #10
Jeg samler ikke point, så det gør du bare - men husk at acceptere dit svar, så tråden lukkes  =)

Jeg må indrømme, at jeg stadig ikke fatter hat af, hvad der er dit problem - med mindre, du har skrevet en uhensigtsmæssig kode. Det er da bare at skrive noget i stil med:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<script type="text/javascript">
function foo(src) {
    document.getElementById("myImageHolder").setAttribute("src", src);
}
</script>
</head>
<body>

<div>
    <img id="myImageHolder" src="" alt="imgPlaceHolder" style="border:1px solid red">
</div>

<p>
    <button onclick="foo('http://www.eksperten.dk/images/eksperten_logo.gif')">Pic A</button>
    <button onclick="foo('http://www.eksperten.dk/avatar?267')">Pic B</button>
</p>

</body>
</html>

Du kan godt hente det nye billedes dimensioner:

var img = new Image();
img.onload = function(){
    var w = this.width;
    var h = this.height;
    var elmImg = document.getElementById("myImageHolder");
    elmImg.style.width = w + "px";
    elmImg.style.height = h + "px";
    elmImg.setAttribute("src", this.src);
}
img.src = "a_cute_little_pic.jpg";

- men det er så guddommelig overflødigt  =)
Avatar billede olebole Juniormester
27. januar 2012 - 14:38 #11
OMG ...!!! Ekspertens URL-parser er skrevet endnu dårligere end resten af sitets kode - selvom man ikke skulle tro det muligt!  :o|

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
<script type="text/javascript">
function foo(src) {
    document.getElementById("myImageHolder").setAttribute("src", src);
}
</script>
</head>
<body>

<div>
    <img id="myImageHolder" src="" alt="imgPlaceHolder" style="border:1px solid red">
</div>

<p>
    <button onclick="foo('http://www.eksperten.dk/images/eksperten_logo.gif')">Pic A</button>
    <button onclick="foo('http://www.eksperten.dk/avatar?267')">Pic B</button>
</p>

</body>
</html>
Avatar billede olebole Juniormester
27. januar 2012 - 14:39 #12
Du skal bare holde dig helt fra at sætte bredde og højde på billedet. Så kan det ikke gå galt  =)
27. januar 2012 - 16:05 #13
HEJ OleBole,

1000000 --> 00 Tak for din hjælp.

På min browser havde jeg det "sjove" problem, at når jeg satte Width og height blev billedet "automatisk" reduceret til thumbs- størrelse (30/28). I det øjeblik jeg droppede width/height og kun anvendte SRC = '...' fungerede det .

Så jeg er kommet videre, fundet løsningen på problemet. Lukker spørgsmålet og hvis du fortryder omkring pointene - send en kommetar og jeg tildeler dig point.

Nok engang : Tak for hjælpen.

LUKKER.
Avatar billede olebole Juniormester
27. januar 2012 - 16:51 #14
Det var så lidt, og jeg er glad for, det endelig lykkedes at finde en god løsning  =)

Jeg spørger aldrig selv, så jeg har ikke noget at bruge point til. For 10 år siden indebar det stadig en vis prestige for mig, men det var dengang. Nu skal andre have en chance for at køre mig baglæns ud af pointsystemet og 'blære' sig lidt i deres stille sind. Men tak for tilbudet  *o)
Avatar billede olebole Juniormester
27. januar 2012 - 16:53 #15
PS: "Vidste du at det bedste tidspunkt for lyse indfald er under et kæmpe druk-gilde ?" >> Hvad havde du forestillet dig? I wrote that book!  *D
27. januar 2012 - 18:06 #16
HÆ HÆ,

Under hvilket pseudonum ? ((*****) 5 stjerner)

(D)-KR
Avatar billede olebole Juniormester
27. januar 2012 - 18:40 #17
Titel: "Smoke, joke, drink and wink!"
Pseudonym: "L.E. Vemand"

*-/
29. januar 2012 - 13:34 #18
HEJ L.E.Vemand (alias OleBole) + HÆHÆ,

Jeg har modificeret din kode lidt, så den passer bedre til mine behov:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Billed test </title>

<script type="text/javascript">
{
    function vis(cc)
    {
        var a = document.getElementById('datafile');
        foo(a.value);
    }

    function foo(src)
    {
        document.getElementById("myImageHolder").setAttribute("src", src);
    }

    function edit()
    {
var bb = document.getElementById("edit");

        if (bb.value == 'EDIT')
        {
            bb.value = 'SAVE';
            var cc = document.getElementById("edblok");
            cc.style.display = "block";       
        }
        else
        {
            bb.value = 'EDIT';
            var cc = document.getElementById("edblok");
            cc.style.display = "none";   
        }
    }
}
</script>

</head>
<body>
    <div>
        <img id="myImageHolder" src="E:/BILDER/DÅBEN/DSC_0024.JPG" alt="imgPlaceHolder" style="border: 2px solid red">
    </div>
    <div id="edblok" style='display:none;'>
        <button onclick="foo('http://www.eksperten.dk/images/eksperten_logo.gif')">Pic A</button>
        <button onclick="foo('http://www.eksperten.dk/avatar?267')">Pic B</button>
        <form action="java script:vis();" enctype="multipart/form-data" method="post">
            <input type="file" id="datafile" size="20" value=""><br>
            <input type="Submit" value="INDSETT BILDE">
        </form>
    </div>
    <input type="button" id="edit" size="20" value="EDIT" onclick='edit();'><br>
</body>
</html>                                   


Det her fungerer sålænge jeg henter billeder fra SAMME bibliotek og kun SAMME bibliotek. Henter jeg billedet fra et andet bibliotek vises billedet ikke (damn)...

Jeg er (som du vel allerede har gættet) ikke den store ørn til JS (det er Delphi) så jeg må bede dig om en (eller flere ?)  tjeneste-(r) mere:

1: Hvordan får jeg dette til at hente billed-filer fra andre biblioteker ?

2: Hvordan ville du ændre denne kode så jeg kan gøre det hele i EEEEET klik (udover åbne EDIT og afslutte med SAVE ) ?

KR
29. januar 2012 - 13:47 #19
UUUUUUUPSSSS,,,

(Fandt årsagen til manglende indsætning:

(Endnu et lyst indfald (skål ) )

<input type="file" id="datafile" size="20" value=""><br>

Size = 20 ... 

Ændrede til 40 og vips og viola (dansk for Voila ).


Men den med EEEET klik genstår.

KR


PS: Hjælp til selvhjælp er nu ikke at foragte !
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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



IT-JOB

Cognizant Technology Solutions Denmark ApS

Energy Trading Project Manager – Consulting

MAN Truck & Bus Danmark A/S

IT Manager

Vallensbæk Kommune

Digitaliseringskonsulent

Cognizant Technology Solutions Denmark ApS

Sr. Test Analyst