billede nedskæring let med folkesundhedsprogrammet

, image nedskæring let med folkesundhedsprogrammet,,,,, 18,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, ønskede et formål, let at anvende metode til nedskæring dine billeder i folkesundhedsprogrammet?det er hvad php klasser for - genanvendelige stykker af funktioner, som vi opfordrer til at gøre det beskidte arbejde bag kulisserne.vi skal lære at skabe vores egen klasse, der vil være godt bygget, samt unødvendige.nedskæring skal være let.hvor let?hvad med tre skridt!,,,, indledning, at give dig et lille glimt på, hvad vi forsøger at opnå med vores klasse, klasse, bør være:,, let at anvende, format og uafhængige.altså, åben, resize, og redde en række forskellige billeder formater. intelligent størrelsessortering - intet billede fordrejning.note:,, det er ikke en lektion i, hvordan man skaber klasser og genstande, og selv om denne evne vil bidrage til, at det ikke er nødvendigt for at følge denne forelæsning. der er meget at dække, lad os begynde.,, trin 1, forberedelse, vi starter nu.i deres arbejde at skabe to filer: en, der hedder: index.php, den anden resize-class.php, trin 2, der protesterer, til at give dem en idé om, hvad vi forsøger at opnå, vil vi begynde med kodning opfordringer, vi kan bruge til at resize billederne.åbn din index.php fil og tilføje følgende kode. som du kan se, er der en god logik i det, vi laver.vi åbner det image, fil, vi sætter de dimensioner, vi ønsker at resize image, og den type resize., så redder vi det image, at vælge billedformat, vi ønsker og billedkvaliteten.save og luk dine index.php fil. //* * * omfatte klassen omfatte ("resize klasse. folkesundhedsprogrammet"); //* * * 1) sæt /belastning image $resizeobj = nye resize ('sample jpg); //* * * 2) resize image (muligheder: nøjagtige, portræt, landskab, auto, afgrøder) $resizeobj - > resizeimage (150, 100, planteavl); //* * * 3) redde image $resizeobj - > saveimage ('sample-resized. gif, 100); fra kode ovenfor, kan man se, vi åbner en jpg fil men at redde en gif.husk, det handler om fleksibilitet,.,, trin 3 klasse skelet, det er objekt orienteret planlægning (ups), som gør den følelse af lette mulig.tror i en klasse som et mønster, man kan sammenfatte de data - et udtryk, som virkelig betyder, at nye data.vi kan genbruge det klasse igen og igen, uden at det er nødvendigt at omskrive noget af den rigtige kode - man behøver blot at kalde den passende metoder, som vi gjorde det i to.når vores mønster er blevet skabt, skaber vi tilfælde af dette mønster, kaldet objekter.,, "konstruktion, funktion, der er kendt som en konstruktør, er en særlig kategori metode, der bliver kaldt af klasse, da de skaber et nyt objekt." lad os begynde at skabe vores resize klasse.åbn din resize-class.php fil.nedenfor er der en virkelig grundlæggende klasse skelet struktur, som jeg har kaldt "resize".note klasse variable bemærkning; dette er var begynder vi med vores vigtigste klasse variabler senere., opbygge funktion, der er kendt som en konstruktør, er en særlig kategori metode (udtrykket "- metoden", er det samme som en funktion, men når vi taler om klasser og genstande udtrykket metode bruges ofte), der får med den klasse, når man skaber et nyt mål.det gør den egnet til at gøre nogle starter, - som vi vil gøre i de kommende skridt. klasse resize (//* * * klasse variabler offentlig funktion __construct() {}}, konstatere, at der er en dobbelt, understreger for bygge metode.,, løntrin 4 konstruktør, vi skal ændre konstruktøren metode ovenfor.for det første vil vi bestå i filnavn (sti) af vores image er ændret.vi kalder denne variabel $filnavn.vi er nødt til at åbne filen, vedtaget med folkesundhedsprogrammet (især på gd bibliotek) php kan læse det billede.vi gør det med den sædvane, metode openimage ".jeg finder, at denne metode, arbejder på et øjeblik, men nu skal vi redde resultatet som en klasse for variabel.en klasse variabel er bare en variabel - men det er specifikke for denne klasse.kan du huske den klasse variable bemærkning, som jeg nævnte tidligere.tilføje "ry" som en privat variabel ved maskinskrivning private $billede; ".ved at fastsætte den variabel, som "private" du er fastsættelse af omfanget af denne variabel, så kan det kun være tilgængelige i klassen.fra nu af kan vi ringe til vores åbnet image, der er kendt som en ressource, som vi vil gøre senere, når vi resize. mens vi er ved det, lad os gemme højde og bredde på billedet.jeg har en fornemmelse af, at disse vil være nyttige senere. nu skal de have følgende. klasse resize (//* * * klasse variabler private $billede; private $bredde; private $højde; funktion __construct ($filnavn) (//* * * åbne filen $- > image = $- > openimage ($filnavn); //* * * få bredde og højde $- > bredde = imagesx ($- > billede); $- > højde = imagesy ($- > billede);}}, metoder imagesx og imagesy er bygget i funktioner, som er en del af gd 's bibliotek.de få bredde og højde af dit billede,.,, løntrin 5 om image i det foregående trin, vi kalder den skik metode openimage.i dette skridt, vil vi skabe denne metode.vi ønsker at gøre vores tankegang manuskriptet til os, så, afhængigt af hvad fil type er bestået, manuskript skal bestemme, hvad gd bibliotek funktion det kalder på åbne image.det er nemt at opnå ved at sammenligne de filer udvidelse med et skift erklæring., går vi i vores sag, vi ønsker at resize og afkast, der filer ressource. privat funktion openimage ($fil) (//* * * få udvidelse $udvidelse = strtolower (strrchr ($fil. ') skift ($udvidelse) (sag. jpg: sag. jpeg: $img = @ imagecreatefromjpeg ($fil); bryde; sag. gif: $img = @ imagecreatefromgif ($fil); bryde; sag. men heller ikke dér er menneskene sikre ": $img = @ imagecreatefrompng ($fil); pause. default: $img = falske pause.} tilbage $img;}, trin 6 -resize, det er hvor kærlighed sker.det er bare en forklaring på, hvad vi skal gøre, - - så ingen lektier.i løbet af de næste skridt, vil vi skabe en offentlig metode, som vi kalder at udføre vores resize, så det giver mening at gå den bredde og højde, samt oplysninger om, hvordan vi ønsker at resize image.lad os tale om det et øjeblik.der vil være scenarier, hvor du gerne vil resize et billede til en nøjagtige størrelse.godt, lad os tage dette.men der vil også være tidspunkter, hvor du er nødt til at resize hundredvis af billeder og hvert billede er et andet aspekt i forholdet - portræt billeder.nedskæring for nøjagtige størrelse vil føre til alvorlig konkurrenceforvridning. hvis vi ser på vores muligheder for at forhindre konkurrencefordrejning, kan vi:,, resize billedet så tæt som vi kan, for at vores image dimensioner, samtidig med at holde højde /breddeforhold., resize billedet så tæt som vi kan, for at vores image dimensioner og afgrøder den resterende del.,, begge dele er levedygtig, afhængig af deres behov. ja.vi forsøger at klare det hele.faktum er, at vi skal give muligheder:,, resize af nøjagtige bredde /højde.(nøjagtige), resize ved bredde - nøjagtige bredde fastsættes, højde vil blive justeret i henhold til billedformat.(landskab, resize af højde - resize ved bredde, men den højde og bredde, vil der blive justeret dynamisk.(et), auto bestemme mulighed nr. 2 og 3.hvis du er skruet gennem en mappe med forskellig størrelse billeder, lad det afgøre, hvordan jeg skal håndtere det her.(auto), resize, så afgrøde.det er min favorit.nøjagtige størrelse, ingen forvrængning.(afgrøder), trin 7 nedskæring.lad os gøre det.der er to dele til resize metode.den første er at få den optimale bredde og højde for vores image ved at skabe nogle skik metoder - og naturligvis går i vores resize "mulighed", som beskrevet ovenfor.den bredde og højde er tilbage som et system, og at deres respektive variabler.de er fri til at "give som reference, - - men jeg er ikke en stor fan af det. den anden del er det udfører de faktiske resize.for at holde denne forelæsning størrelse ned, må du læse op på følgende gd funktioner:,, imagecreatetruecolor, imagecopyresampled.,, vi sparer også produktionen af imagecreatetruecolor metode (en ny sande farver billede) som en klasse for variabel.tilføje "private $imageresized;" med din anden klasse variabler, er udført af en nedskæring på modul, kendt som gd 's bibliotek.mange af de metoder, vi bruger, er der et bibliotek. //* * * tilføjer klasse variabler private $imageresized; offentlige funktion resizeimage ($newwidth, $newheight $mulighed = "automatisk") (//* * * få optimal bredde og højde - baseret på $mulighed $optionarray = $- > getdimensions ($newwidth, $newheight, strtolower ($mulighed) $optimalwidth = $optionarray ['optimalwidth '] $optimalheight = $optionarray ['optimalheight']; //* * * resample - skabe image fremstilling af x, y størrelse $- > imageresized = imagecreatetruecolor ($optimalwidth, $optimalheight); imagecopyresampled ($- > imageresized $- > image, 0 0, 0 0, $optimalwidth, $optimalheight $- > bredde, $- > højde); //* * * hvisvalgmulighed er "afgrøde, afgrøder, hvis ($mulighed = =" crop ") ($- > afgrøde ($optimalwidth, $optimalheight, $newwidth, $newheight)}}, trin 8 afgørelse træ, mere arbejde, du gør nu, jo mindre at gøre når du resize.denne metode vælger den vej at gå, med det formål at få den optimale resize bredde og højde baseret på din resize mulighed.det kalder den passende metode, som vi vil være at skabe i det næste skridt, privat funktion getdimensions ($newwidth, $newheight $mulighed) (skift ($option) {"præcise": $optimalwidth = $newwidth. $optimalheight = $newheight; bryde; sag portræt: $optimalwidth = $- > getsizebyfixedheight ($newheight); $optimalheight = $newheight; bryde; sag landskab: $optimalwidth = $newwidth. $optimalheight = $- > getsizebyfixedwidth ($newwidth); bryde; sag auto: $optionarray = $- > getsizebyauto ($newwidth, $newheight); $optimalwidth = $optionarray ['optimalwidth '] $optimalheight = $optionarray ['optimalheight'] bryde; sag "afgrøde: $optionarray = $- > getoptimalcrop ($newwidth, $newheight); $optimalwidth = $optionarray ['optimalwidth '] $optimalheight = $optionarray ['optimalheight'] pause.} tilbage system ('optimalwidth = > $optimalwidth, optimalheight = > $optimalheight)}, trin 9 optimal størrelse, vi har allerede diskuteret, hvad disse fire metoder.de er bare elementær matematik, virkelig, at udregne vores bedste passer. privat funktion getsizebyfixedheight ($newheight) ($) kvotient = $- > bredde /$- > højde. $newwidth = $newheight * $); tilbage $newwidth;} privat funktion getsizebyfixedwidth ($newwidth) ($ratio = $- > højde /$- > bredde; $newheight = $newwidth * $); tilbage $newheight;} privat funktion getsizebyauto ($newwidth, $newheight) (hvis ($- > højde < $- > bredde) /* * * image er ændret, er større (landskab) ($optimalwidth = $newwidth. $optimalheight = $- > getsizebyfixedwidth ($newwidth)} elseif ($- > -t > $- > bredde) //* * * image er ændret, er højere (portræt) ($optimalwidth = $- > getsizebyfixedheight ($newheight); $optimalheight = $newheight;} andre //* * * image er resizerd er en firkant (hvis ($newheight < $newwidth) ($optimalwidth = $newwidth. $optimalheight = $- > getsizebyfixedwidth ($newwidth)} andre, hvis ($newheight > $newwidth) ($optimalwidth = $- > getsizebyfixedheight ($newheight); $optimalheight = $newheight;) andet (//* * * sqaure er ændret til et kvadrat, $optimalwidth = $newwidth. $optimalheight = $newheight;}} tilbage system ('optimalwidth = > $optimalwiddet, optimalheight = > $optimalheight)} privat funktion getoptimalcrop ($newwidth, $newheight) ($heightratio = $- > højde /$newheight. $widthratio = $- > bredde /$newwidth; hvis ($heightratio < $widthratio) ($optimalratio = $heightratio;} andre ($optimalratio = $widthratio;} $optimalheight = $- > højde /$optimalratio. $optimalwidth = $- > bredde /$optimalratio; tilbage system ('optimalwidth = > $optimalwidth, optimalheight = > $optimalheight)}, gå 10 afgrøde, hvis du valgte en afgrøde, - - har du brugt den afgrøde, valg, så har du en lille skridt.vi skal til afgrøde billedet fra, i midten.afgrøder er en lignende proces til nedskæring, men med et par størrelser parametre, vedtaget i. privat funktion afgrøde ($optimalwidth, $optimalheight, $newwidth, $newheight) (//* * * finde center - dette vil blive anvendt for afgrøden $cropstartx = ($optimalwidth /2) - ($newwidth /2 $cropstarty = ($optimalheight /2) - ($newheight /2 $afgrøde = $- > imageresized; //imagedestroy ($- > imageresized); //* * * nu afgrøde fra center til nøjagtige ønskede størrelse $- > imageresized = imagecreatetruecolor ($newwidth, $newheight); imagecopyresampled ($- > imageresized $afgrøde, 0 0, $cropstartx, $cropstarty, $newwidth, $newheight, $newwidth, $newheight)}, trin 11 redde det image, vi er getting; næsten færdig.nu er det tid til at redde billedet.vi går i den retning, og det billede, vi vil gerne kvalitet varierer fra 0 til 100, 100, der er de bedste, og kalder den passende metode.et par ting at bemærke om billedkvaliteten: jpg anvender en skala fra 0 - 100, 100, at være den bedste.gif billeder har ikke en billedkvalitet indstilling.men heller ikke dér er menneskene sikre os, men de bruger størrelse 9, 0, at være den bedste.det er ikke godt, da vi ikke kan forvente at huske det, hver gang vi skal redde et billede.vi har en smule magi til at standardisere alt. offentlige funktion saveimage ($savepath, $imagequality = "100") (//* * * få udvidelse $udvidelse = strrchr ($savepath,. '); $udvidelse = strtolower ($udvidelse) skift ($udvidelse) (sag ". jpg: sag. jpeg: hvis (imagetypes() & img_jpg) (imagejpeg ($- > imageresized, $savepath, $imagequality)} bryde; sag. gif: hvis (imagetypes() & img_gif) (imagegif ($- > imageresized $savepath)} bryde; sag. men heller ikke dér er menneskene sikre: //* * * omfang kvalitet fra 0 til 100 på 0 - 9 $scalequality = rund (($imagequality /100) * 9); //* * * beregnet kvalitet om som 0 er bedst, ikke9 $invertscalequality = 9. - $scalequality; hvis (imagetypes() & img_png) (imagepng ($- > imageresized, $savepath, $invertscalequality)} bryde; //...etc - default: //* * * nr. forlængelse - ikke redde.pause.} imagedestroy ($- > imageresized)}, nu også er et godt tidspunkt til at ødelægge vores image ressource til at frigøre nogle hukommelsen.hvis du var til brug i produktionen, kan det også være en god idé at fange og vende tilbage med resultatet af reddede image.,, indgåelse, men sådan er det.tak for efter denne forelæsning, håber jeg, du finder det nyttigt.jeg værdsætter din feedback, via følgende bemærkninger.




Previous:
Next Page: