- at skabe en jquery billede fra bunden

) stik af, hvordan der kan skabes en jquery image planteavl stik af forfra - del ii,,,,, andel,,,,,,,, 26,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' ikke gå glip af det.,,,,, web ansøgninger skal give letanvendelige løsninger for at uploade og manipulere med rige indhold.denne proces kan skabe vanskeligheder for visse brugere, der har minimal foto redigering færdigheder.afgrøder er en af de mest anvendte billede manipulationsteknikker, og denne trinvise tutor vil dække hele udviklingen af et billede laver for jquery) javascript bibliotek.,,,, en kort opsummere, i det foregående forelæsning, op til fornyet overvejelse:,, at udvide jquery, hvordan vi laver mere fleksibel ved at ved hjælp af custom muligheder, at skabe grundlæggende billede) anvendelse, vi i dag tager tingene yderligere og afslutte vores stik: vi vil definere flere kunder mulighed, tilføje callbacks, udvælgelse draggable og resizable, opbygge en forsmag pane og en størrelse, vink og skrive nogle server-side kode dukke image, skridt. 1. at tilføje flere valgmuligheder, åben din, jquery.imagecrop.js, fil, der befinder sig i, /resources /er /imagecrop /enog tilføje følgende kode:, var defaultoptions = {allowmove: det er rigtigt, allowresize: det er rigtigt, allowselect: det er rigtigt, aspectratio: 0, displaypreview: falske, displaysizehint: falske, minselect: [0, 0], minsize: [0, 0], maxsize: [0, 0], outlineopacity: 0,5, overlayopacity: 0,5, previewboundary: 90, previewfadeonblur: 1, previewfadeonfocus: 0, 35, selectionposition: [0, 0], selectionwidth: 0, selectionheight: 0 //prop i arrangement, som onchange: function() {}, onselect: function() {}}, vi har tilføjet flere valgmuligheder og to callbacks, onchange, og, onselect,.de kan være ganske nyttigt i den tilstand i stik. de muligheder, her er en hurtig gennemgang af de muligheder, som vi er ved at tilføje:,, aspectratio - angiver billedformat på udvælgelse (standardværdi er 0,.,, displaypreview - angiver, om forpremiere pane er synlig eller ikke (standardværdi er falske,), displaysizehint - angiver, hvorvidt den størrelse antydning er synlig eller ej (standardværdi er falske,), minsize - angiver mindstemål for udvælgelse (standardværdi, [0, 0]), maxsize, fastsættes det maksimale størrelse for udvælgelse (standardværdi, [0, 0]), previewboundary - angiver størrelsen af forpremiere pane (standardværdi, 90), previewfadeonblur - angiver opacitet af forpremiere rude på tåge default værdi, 1), previewfadeonfocus - angiver opaciteten af den første panel om fokus (standardværdi, 0, 35,), oncahnge, returnerer den laver er tilstand, når valget er ændret, onselect, returnerer den laver er staten, når udvælgelsen er foretaget, trin 2: tilføjelse af flere lag i dette skridt, er vi nødt til at tilføje flere lag.lad os begynde med stor ledetråd.,...//påbegynd baggrund lag størrelse ledetråd, og det er over den //udvælgelse af lag var $sizehintbackground = $(< div id = "billede afgrøde størrelse hint baggrund" /> «). css ({uklarhed: 35, holdning: "absolut '}). insertafter ($udvælgelse); //aktivere en forgrundsviden lag størrelse ledetråd, og det er over den //baggrund lag var $sizehintforeground = $(< span id =" billede afgrøde størrelse hint forgrundsprocesser "/> «). css ({holdning:" absolut'}). insertafter ($sizehintbackground); vi har tilføjet to adskilte lag, fordi vi ikke ønsker denne forgrundsviden, der påvirkes af baggrundsuklarheds. nu skal vi tilføje ni lag:den resize vagter.,...//aktivere en nord - vest resize kontaktperson, og det er over den //udvælgelse af lag var $nwresizehandler = $(< div klasse = "billede afgrøde resize kontakt" id = "billede afgrøde nw resize kontakt" /> «). css ({uklarhed: 0,5, holdning: "absolut '}). insertafter ($udvælgelse); //aktivere et nord - resize kontaktperson og sted over udvælgelse //lag var $nresizehandler = $(< div klasse =" billede afgrøde resize kontakt "id =" image-crop-n-resize-handler "/> «). css ({uklarhed: 0, 5, stilling:" absolut'}). insertafter ($udvælgelse); //aktivere en nord - øst resize kontaktperson, og det er over den //udvælgelse af lag var $neresizehandler= $(< div klasse = "billede afgrøde resize kontakt" id = "billede afgrøde ne resize kontakt" /> «). css ({uklarhed: 0,5, holdning: "absolut '}). insertafter ($udvælgelse); //aktivere en vest resize kontakt, og det ovenfor udvælgelse //lag var $wresizehandler = $(< div klasse =" billede afgrøde resize kontakt "id =" image-crop-w-resize-handler "/> «). css ({uklarhed: 0,5, holdning:" absolut'}). insertafter ($udvælgelse); //aktivere en øst resize kontaktperson og det er over udvælgelse //lag var $eresizehandler = $(< div klasse = "billede afgrøde resize kontakt" id = "image-crop-e-resize-handler" /> css ((').uklarhed: 0,5, holdning: "absolut '}). insertafter ($udvælgelse); //aktivere en syd - vest resize kontaktperson, og det er over den //udvælgelse af lag var $swresizehandler = $(< div klasse =" billede afgrøde resize kontakt "id =" billede afgrøde sw resize kontakt "/> «). css ({uklarhed: 0,5, holdning:" absolut'}). insertafter ($udvælgelse); //aktivere et syd resize kontaktperson og sted over udvælgelse //lag var $sresizehandler = $(< div klasse = "billede afgrøde resize kontakt" id = "image-crop-s-resize-handler" /> «). css ({uklarhed: 0,5, holdning: "absolut '}). insertafter ($udvælgelse);//aktivere en syd - øst resize kontaktperson, og det er over den //udvælgelse af lag var $seresizehandler = $(< div klasse = "billede afgrøde resize kontakt" id = "billede afgrøde, se resize kontakt" /> «). css ({uklarhed: 0,5, holdning: "absolut '}). insertafter ($udvælgelse); vi har igangsat en resize kontaktperson for hvert hjørne og midten side. og endelig forvisningen rude,.,...//aktivere en forsmag indehaver, og det er efter en lag var $previewholder = $(< div id = "billede afgrøde forpremiere indehaver" /> «). css ({uklarhed: options.previewfadeonblur, overløb: "skjulte" holdning: "absolut '}). insertafter ($oversigt); //aktivere en forsmag image og tilføj det til forpremiere indehaver var $forpremiere = $(< img alat =" afgrøde forpremiere "id =" billede afgrøde forpremiere "/> «). css ({holdning:" absolut'}). attr ('src, $image. attr ('src ')). appendto ($previewholder); vi har igangsat to lag:,, indehaveren, der fungerer som en maske, og den første billede, der har samme, src, som originalen.vi har brugt den,,,. appendto(), en metode til at indsætte forpremiere image ved udgangen af indehaveren.,, trin 3: forbedring af grænsefladen, først vil vi tilføje to nye globale variabler,.,...//sæt globale variabler var resizehorizontally = sandt, resizevertically = sandt, selectionexists, selectionoffset = [0, 0], selectionorigin = [0, 0], får vi brug for disse variabler senere, når vi ajourfører den, resizeselection(), funktion. i første del, vi kun tog sig af det, allowselect, mulighed.lad os klare, allowmove, og allowresize,.,...hvis (muligheder. allowmove) //binde en begivenhed, kontakt til den mousedown "tilfælde af udvælgelsen lag $udvælgelse. mousedown (pickselection); hvis (muligheder. allowresize) //binde en begivenhed, kontakt til den mousedown" tilfælde af resize står $('div.image-crop-resize-handler '). mousedown (pickresizehandler), vi har lagt, mousedown, i forbindelse med udvælgelse og alle resize vagter. vi er nødt til at skrive lidt mere kode for at ajourføre de nye lag har vi indsat før. og...//ajourføring af den størrelse, vink funktion updatesizehint (aktion) (skift (action) {"forsvinde": //fade ud størrelse hint $sizehintbackground. fadeout ('slow. $sizehintforeground. fadeout ('slow) bryde; default: var display = (selectionexists & & muligheder. displaysize)? «block ":" ingen "; //ajourføring af forgrundsviden lag $sizehintforeground. css ({markør: misligholdelse, display: display, venstre: muligheder. selectionposition [0] + 4, top: muligheder. selectionposition [1] + 4}). http: //(options.selectionwidth + x + muligheder. selectionheight); //ajourføring baggrund lag $sizehintbackground. css ({markør: misligholdelse, display: display, venstre: muligheder. selectionposition [0] + 1, top: muligheder. selectionposition [1] + 1 $sizehintfor bredde (}).eground. width() + 6). højde ($sizehintforeground. height() + 6)); den, updatesizehint(), funktion, behandler to tilfælde, afhængigt af de specificerede parametre.,, hvis der ikke er angivet, default opførsel er at vise og ajourføre størrelse vink (hvis udvælgelse findes).den anden adfærd, er at forsvinde et vink.dette vil blive anvendt, når brugeren er færdig med rigtige valg.,, om de tidligere skridt, vi har igangsat den resize hjælpere.nu skal vi placere dem i den rette stilling.,...//ajourføring af resize som funktion updateresizehandlers (aktion) (skift (action) {"gemme": $(. image afgrøde resize kontaktperson). (function() {$(dette). css ((display: "ingen"})}); bryde; default: var display (selectionexists & & muligheder. allowresize)? «block ":" ingen "$nwresizehandler. css ({markør:" nw resize, display: display, venstre: muligheder. selectionposition [0] - matematik. runde ($nwresizehandler. width() /2), top: muligheder. selectionposition [1] - matematik. runde ($nwresizehandler. height() /2))); $nresizehandler. css ({markør: "n-resize, display: display, venstre: muligheder. selectionposition [0] + matematik. runde (options.selectionwidth /2 - $neresizehandler. width() /2) - 1, top: muligheder. selectionposition [1] - matematik. runde ($neresizehandler. height() /2)}).$neresizehandler. css ({markør: en resize, display: display, venstre: muligheder. selectionposition [0] + options.selectionwidth - matematik. runde ($neresizehandler. width() /2) - 1, top: muligheder. selectionposition [1] - matematik. runde ($neresizehandler. height() /2)}) og $wresizehandler. css ({markør: "w-resize, display: display, venstre: muligheder. selectionposition [0] - matematik. runde ($neresizehandler. width() /2), top: muligheder. selectionposition [1] + matematik. runde (options.selectionheight /2 - $neresizehandler. height() /2) - 1.}); $eresizehandler. css ({markør: "e-resize, display: display, venstre: muligheder. selectionposition [0] + options.selectionwidth - matematik. runde ($neresizehandler. width() /2) - 1, top: muligheder. selectionposition [1] + matematik. runde (options.selectionheight /2 - $neresizehandler. height() /2) - 1}); $swresizehandler. css ({markør: sw resize, display: display, venstre: muligheder. selectionposition [0] - matematik. runde ($swresizehandler. width() /2), top: muligheder. selectionposition [1] + options.selectionheight - matematik. runde ($swresizehandler. height() /2) - 1.}); $sresizehandler. css ({markør: "s-resize, display: display, venstre: muligheder. selectionposition [0] + matematik. runde (options.selectionwidth /2 - $seresizehandler. width() /2) - 1, top: muligheder. selectionposition [1] + options.selectionheight - matematik. runde ($seresizehandler. height() /2) - 1}); $seresizehandler. css ({markør:" se resize, display: display, venstre: muligheder. selectionposition [0] + options.selectionwidth - matematik. runde ($seresizehandler. width() /2) - 1, top: muligheder. selectionposition [1] + options.selectionheight -matematik. runde ($seresizehandler. height() /2) - 1})}}, svarende til det sidste funktion, updateresizehandlers(), test to tilfælde:, gem jer alle, og misligholdelse.i det første tilfælde, vi kalder den. each(), en metode til at iterate over de matchede elementer. lad os skabe, updatepreview(),.,...//opdatere forpremiere funktion updatepreview (aktion) (skift (aktion) (sag 'fokus': //fader i forvisningen indehaver lag $previewholder. stop(). manipulerer ({uklarhed: options.previewfadeonfocus}); bryde; sag' slør ": //fade ud forvisningen indehaver lag $previewholder ret. stop(). ((uklarhed: options.previewfadeonblur}); bryde; sag" gemme ": //- forpremiere indehaver lag $previewholder. css ((display:" ingen "}); bryde; standard:var display = (selectionexists & & muligheder. displaypreview)? «block ":" ingen "; //opdatere forpremiere indehaver lag $previewholder. css ((display: display, venstre: muligheder. selectionposition [0], top: muligheder. selectionposition [1] + options.selectionheight + 10}); //opdatere forpremiere størrelse, hvis (options.selectionwidth > muligheder. selectionheight) {(options.selectionwidth & & muligheder. selectionheight) (//opdatere forpremiere skærmbilledstørrelse $forpremiere. bredde (matematik. runde ($image. width() * options.previewboundary /muligheder. selectionwidth) $forpremiere. højde (matematik. runde ($image. height() * $forpremiere.idth() /$image. width())); //opdatere forpremiere indehaver lag størrelse $previewholder. bredde (muligheder. previewboundary). højde (matematik. runde (options.selectionheight * $forpremiere. height() /$image. height())) andet (hvis (options.selectionwidth & & muligheder. selectionheight) (//opdatere forpremiere skærmbilledstørrelse $forpremiere. højde (matematik. runde ($image. height() * options.previewboundary /muligheder. selectionheight) $forpremiere. bredde (matematik. runde ($image. width() * $forpremiere. height() /$image. height())); //opdatere forpremiere indehaver lag størrelse $præ -viewholder. bredde (matematik. runde (options.selectionwidth * $forpremiere. width() /$image. width()). højde (muligheder. previewboundary)) //opdatere forpremiere image holdning $forpremiere. css ({tilbage. - matematik. runde (muligheder. selectionposition [0] * $forpremiere. width() /$billede. width()), top. - matematik. runde (muligheder. selectionposition [1] * $forpremiere. height() /$image. height())})}}; koden for de første tre tilfælde skal være sig selv.vi kalder den. animate(), en metode til at udføre en sædvane, udvikling af et sæt af css egenskaber.næste gang, vi beslutter det, display, værdi og den holdning, den første indehaver.så vi omfang forvisningen billede passer, previewboundary, valg og beregne sin nye stilling. vi har brug for en ajourføring af den, updatecursor(), funktion,.,...//ajourføring markøren type funktion updatecursor (cursortype) ($udløser. css ({markør: cursortype}); $skitse. css ({markør: cursortype}); $udvælgelse. css ({markør: cursortype}); $sizehintbackground. css ({markør: cursortype}); sizehintforeground css dollars. ((markør: cursortype})}, og nu det sidste funktion af dette skridt,.,...//ajourføring af stik grænseflade funktion updateinterface (afsender) (skift (afsender) (sag setselection ": updateoverlaylayer(); updateselection(); updateresizehandlers ('hide-all '); updatepreview (gem) bryde; sag pickselection": updateresizehandlers ('hide-all) bryde; sag pickresizehandler ": updatesizehint(); updateresizehandlers ('hide-all") brud; sag resizeselection ": updateselection(); updatesizehint(); updateresizehandlers ('hide-all'); updatepreview(); updatecursor ('crosshair ');pause, sag "moveselection": updateselection(); updateresizehandlers ('hide-all '); updatepreview(); updatecursor ('move) bryde; sag releaseselection ": updatetriggerlayer(); updateoverlaylayer(); updateselection(); updatesizehint ('fade-out'); updateresizehandlers(); updatepreview(); bryde; default: updatetriggerlayer(); updateoverlaylayer(); updateselection(); updateresizehandlers(); updatepreview();}};, trin 4: styrkelse af, setselection(),,, vi skal lige tilføje en ting.her: støtte til forpremiere rude,.,...//fastsat en ny udvælgelse funktion setselection (ref.) (//undgå misligholdelse virkning af tilfælde begivenhed. preventdefault(); //forhindre, at tilfælde af anmeldte tilfælde. stoppropagation(); //binde en begivenhed, kontakt til den mousemove 'tilfælde $(nummer). mousemove (resizeselection); //binde en begivenhed kontakt til den mouseup' tilfælde $(nummer). mouseup (releaseselection); //- display - forpremiere mulighed er aktiveret, hvis muligheder. displaypreview) (//binde en begivenhed, kontakt til den mouseenter "tilfælde af forpremiere //indehaver $previewholder. mouseenter (function() {updatepreview ('focus)}); //binde en begivenhed, fører til mouseleave" begivenhed "i pressemeddelelsen //indehaver $previewholder. mouseleave (function() {updatepreview ('blur)})} //meddele, at et udvalg eksisterer selectionexists = sandt; //nulstille udvælgelse størrelse options.selectionwidth = 0, options.selectionheight = 0; //- udvælgelse oprindelse selectionorigin = getmouseposition (tilfælde); //og fastlægge sin holdning muligheder. selectionposition [0] = selectionorigin [0] muligheder. selectionposition [1] = selectionorigin [1]; //ajourføring kun de nødvendige elementer i laver grænseflade //med angivelse af afsenderen af den nuværende ringe updateinterface ('setselection)}, vi har undersøgt, displaypreview, valgmulighed ogbrugte,. mouseenter() og. mouseleave(), funktioner tillægger begivenhed som til forpremiere indehaver.,, løntrin 5: efter valget, at gøre udvælgelsen draggable, er vi nødt til at udlede, hvor brugeren bevæger sig og frigør mus knap,.,...//samler de nuværende udvalg fungerer pickselection (ref.) (//undgå misligholdelse virkning af tilfælde begivenhed. preventdefault(); //forhindre, at tilfælde af anmeldte tilfælde. stoppropagation(); //binde en begivenhed, kontakt til den mousemove 'tilfælde $(nummer). mousemove (moveselection); //binde en begivenhed kontakt til den mouseup' tilfælde $(nummer). mouseup (releaseselection) var mouseposition = getmouseposition (tilfælde) //- udvælgelse opvejes i forhold til mus holdning selectionoffset [0] = mouseposition [0] - muligheder. selectionposition [0] selectionoffset [1] = mouseposition [1] - optioner. selectionposition [1]; //ajourføring kun de nødvendige elementer i den stik interface //med angivelse af afsenderen af den nuværende ringe updateinterface ('pickselection)}, også vi har valg opvejes i forhold til mus holdning.vi får brug for det senere, i, moveselection(), funktion, trin 6: der resize rådgivere, vil brugeren være i stand til at resize udvælgelse ved at hakke og trække en af de resize hjælpere.og det kan gøres på to måder: på begge akse, hvis brugeren vælger at trække en kontaktperson fra et hjørne - eller på en akse, hvis brugeren vælger at trække en kontaktperson fra midten af side,.,...//vælger en af de resize som funktion pickresizehandler (ref.) (//undgå misligholdelse virkning af tilfælde begivenhed. preventdefault(); //forhindre, at tilfælde af anmeldte tilfælde. stoppropagation(); skift (ref. målet. id) (sag billede afgrøde nw resize kontaktperson: selectionorigin [0] + = options.selectionwidth; selectionorigin [1] + = options.selectionheight; muligheder. selectionposition [0] = selectionorigin [0] - options.selectionwidth; muligheder. selectionposition [1] = selectionorigin [1] - options.selectionheight; bryde; sag image-crop-n-resize-handler ": selectionorigin [1] + = options.selectionheight; muligheds.selectionposition [1] = selectionorigin [1] - options.selectionheight; resizehorizontally = falske bryde; sag billede afgrøde ne resize kontaktperson: selectionorigin [1] + = options.selectionheight; muligheder. selectionposition [1] = selectionorigin [1] - options.selectionheight; bryde; sag image-crop-w-resize-handler ": selectionorigin [0] + = options.selectionwidth; muligheder. selectionposition [0] = selectionorigin [0] - options.selectionwidth; resizevertically = falske bryde; sag image-crop-e-resize-handler": resizevertically = falske bryde; sag image-crop-sw-resize kontaktperson: selectionorigin [0] + = options.selectionwidth; muligheder. selectionposition [0] = selectionorigin [0] - options.selectionwidth; bryde; sag image-crop-s-resize-handler ": resizehorizontally = falske pause.} //binde en begivenhed, kontakt til den mousemove 'tilfælde $(nummer). mousemove (resizeselection); ////////binde en begivenhed, kontakt til de mouseup' tilfælde $(nummer). mouseup (releaseselection); //ajourføring kun de nødvendige elementer i laver grænseflade //med angivelse af afsenderen af den nuværende ringe updateinterface ('pickresizehandler)}; vi har skrevet en sag for hver resize kontaktperson, fordi hver enkelt behov specieltc), trin 7: forbedre, resizeselection(),,, der er forskellig fra den første udgave, resizeselection(), funktion, vil være i stand til at teste minimums - /maksimumspriser størrelse og lås billedformat for udvælgelsen,.,...////////resize den nuværende udvælgelse funktion resizeselection (ref.) (//undgå misligholdelse virkning af tilfælde begivenhed. preventdefault(); //forhindre, at tilfælde af anmeldte tilfælde. stoppropagation(), var mouseposition = getmouseposition (tilfælde) //- udvælgelse størrelse var højde = mouseposition [1] - selectionorigin [1] bredde = mouseposition [0] - selectionorigin [0]; //hvis udvælgelsen størrelse, er mindre end den minimumsstørrelse, den //i overensstemmelse hermed, hvis (matematik. abs (bredde) < muligheder. minsize [0]) bredde = (bredde > = 0).muligheder. minsize [0]: - muligheder. minsize [0]; hvis (matematik. abs (højde) < muligheder. minsize [1]) højde = (højde > = 0).muligheder. minsize [1]: - muligheder. minsize [1]; //test, hvis udvælgelsen størrelse overstiger det image, grænser, hvis (selectionorigin [0] + bredde < 0



Previous:
Next Page: