dynamisk sprite ramme med folkesundhedsprogrammet

, dynamisk sprite ramme med folkesundhedsprogrammet,,,,, andel,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' ikke glip af, i dette nettuts + plus forelæsning, vil du lære at skabe et dynamisk billede sprite ramme "fra et ikon, sæt dit valg.denne ramme skal bestå af sprite image, en sprite stylesheet hvis klasse navne og egenskaber svarer til ikoner i vores sprite image og en html forpremiere side, som vi kan bruge en hurtig referenceguide for rammerne.,, "dynamisk sprite ramme" vil gøre det muligt for dem at anvende ikon fra den sprite, idet dens relativ klasse navn, som direkte vil svare til den ikon - filen navn. ved udgangen af denne forelæsning, føles behageligt at skabe dynamisk billede ånder på egen hånd, og bør være i stand til at gennemføre og drage fuld fordel af de mange fordele ved dette system er, at vi skal bygge en html side med en simpel formular til indsamling af disse data.lad os se på denne form:, <!doctype html> <html lang="en"> <head> \t <title>Sprite Builder</title> \t <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="main.css"> </head> <body> <div id="content"> <form action="sprite_builder.php" method="POST"> <fieldset> <legend>Sprite Builder</legend> <label for="icon_source" class="label">Image Directory:</label> <input id="icon_source" class="ui-corner-all" type="text" name="icon_source" value=""> <label for="icon_width" class="label">Icon Width:</label> <input id="icon_width" class="ui-corner-all" type="text" name="icon_width" value=""> <label for="icon_height" class="label">Icon Height:</label> <input id="icon_height" class="ui-corner-all" type="text" name="icon_height" value=""> <label for="x_offset" class="label">Icon X Offset:</label> <input id="icon_width" class="ui-corner-all" type="text" name="x_offset" value=""> <label for="y_offset" class="label">Icon Y Offset:</label> <input id="y_offset" class="ui-corner-all" type="text" name="y_offset" value=""> <div class="radio"> <label for="icon_type" class="label">Image Type:</label> <div class="radioWrap"><input type="radio" name="icon_type[]" value="png">PNG</div> <div class="radioWrap"><input type="radio" name="icon_type[]" value="jpg">JPEG</div> <div class="radioWrap"><input type="radio" name="icon_type[]" value="gif">GIF</div> </div><!- div.radio - > < etiket til = "icons_per_row" klasse = "mærkning" > ikoner pr. linje: < /etiketten > < input id = "icons_per_row" klasse = "ui hjørne" type = "tekst" navn = "icons_per_row" værdi = "" > < etiket til = "target_directory" klasse = "mærkning" > målet fortegnelse: < /etiketten > < input id = "target_directory" klasse = "ui hjørne" type = "tekst" navn = "target_directory" værdi = "> < etiket til =" target_name "klasse =" mærkning "> målet navn: < /etiketten > < input id =" target_name "klasse =" ui hjørne "type =" tekst "navn =" target_name "værdi =" > < knap 04 angivelse af art.e = "stille" > forelægger < /knap > < /fieldset > < /form > < /div > < /organ > < /html >, som du kan se, over vi har bygget en simpel html5 side med en formular. den skal efter dens resultater for vores sprite_builder.php side. den form, selv har ni områder for indsamling af de oplysninger, vi har brug for:,, icon_source, icon_width, icon_height, x_offset, y_offset, icon_type, icons_per_row, target_directory, target_name, med vores data.,, 1.kontrol af post - system, nu hvor vi har vores form på plads, vil vi være i stand til at indsamle alle de oplysninger, vi har brug for... i vores php, starter vi med at se, om alle form felter har indgivet til en værdi, hvis nogen af de værdier, der ikke er, vil vi blot omdirigere brugeren tilbage til formular side. bemærk, at produktionen i et miljø, du vil finde /sikre denne form flere og give feedback til brugeren, lad os skabe en ny php fil, der hedder "sprite_builder. php nu og kontrol for at se, at alle de områder, vi har fået forelagt i form af specificeret med en værdi. <?folkesundhedsprogrammet (isset ($_post ['icon_source ']) & & isset ($_post ['icon_width']) & & isset ($_post ['icon_height ']) & & isset ($_post ['icon_type']) & & isset ($_post ['icons_per_row ']) & & isset ($_post ['target_directory']) & & isset ($_post ['target_name ']) {} andre (header ('location: http: ///////////////localhost sprite /index.html)}, 2.sanitization, hvis ovennævnte betingelse er opfyldt, dvs. alle de punkter i post - system har en værdi, vil vi steriliseret og forberede disse værdier lidt. lad os skabe en funktion til at forberede vores data for os., funktion, forberede ($post) {$efter = htmlspecialchars (trim ($post)); tilbage til $post;}, prep() funktion er følgende:,, htmlspecialchars - alle data videregives til de "klar" funktion vil have "nøgle" - html mærker nogen symboler i det omdannes til html enheder, - - så må vi få alle de whitespace fra begyndelsen og slutningen af den snor, 3.opbygningen af et system med vores nogen data, vil vi være med data fra vores post - system, og opbygge en ny "ånd" system med klar værdier. vi skal aktivere vores sprite 'system. så begynder vi iterating gennem alle de array_keys for post - system, mens. iterating gennem post - array - nøgler, vil vi se, at hver enkelt post - værdi er en snor., hvis værdi er en snor, vi kan tilføje det til vores "ånd" system ved hjælp af array - nøgle, som det hedder i sprite array. efter denne hver sløjfe, vi gemmer vores produktion vej "" ånd "system samt. vil vi definere, hvad den output_path af concatenating" target_directory »var med "target_name" var, bedes de bemærke, at vi ikke vil tilføje en fil forlængelse her, vi vil definere detsenere, da den icon_type felt er et system, vi vil iterate igennem for at få forelagt værdi og så løbe denne værdi gennem vores prep() funktion og tilføje det til vores "sprite 'system. næste, vi skal aktivere en icon_name" system, som vil være indeholdt i vores sprite - system. - sprite_directory = opendir ($sprite ['icon_source']); $image_total = 0, mens ($file_name = readdir ($sprite_directory)) ($path_info = pathinfo ($file_name); hvis (strtolower ($path_info ['extension ']) = = = $sprite ['icon_type']) ($sprite ['icon_name '] [...] = $path_info ['filename'] $image_total + +) form ($sprite ['icon_name ']); $sprite ['icon_total'] = $image_total; med den sprite 'system fuldstændig, vinu kan gå over til at skabe vores sprite_builder "objekt.,, sprite bygmester objekt,,,,, 1.objekt oversigt, for at gøre de ting, vi gerne ville gøre på en ordentlig og effektiv måde, vi skal bygge et objekt. denne genstand vil gøre tre ting:,, skabe et billede sprite, skabe en css - fil for sprite billede med klasser og baggrund positioner, der svarer til den individuelle ikon navne, og lokaliteter i den sprite, skabe en html forpremiere side for sprite og det relevante css regler, 2.vores formål, er det første, vi gør, er at definere vores formål /klasse, og det er ejendom former. da vi kun arbejder med et objekt, og vi har ikke brug for at få adgang til noget af det er egenskaber uden for den klasse, vi vil få dem alle private. klasse sprite_builder (private $icon_source; private $icon_width; private $icon_height; private $icons_per_row; private $target_directory; private $target_name; private $vej; private $icon_type; private $icon_total; private $icon_name; private $x_offset; private $y_offset;}, 3.klasse konstruktør, og nu skal vi skabe vores klasse konstruktøren. inden for vores konstruktør, vil vi fastlægge hver af vores objekt er egenskaber ved hjælp af de tilsvarende værdier i vores sprite system. det vil gøre alle disse egenskaber, der er til rådighed for hver metode i vores klasse, klasse sprite_builder (private $icon_source; private $icon_width; private $icon_height; private $icons_per_row; private $target_directory; private $target_name; private $vej; private $icon_type; private $icon_total; private $icon_name; private $x_offset; private $y_offset; funktion sprite_builder ($sprite) ($- > icon_source = $sprite ['icon_source '] $denne - > ikon -_width = $sprite ['icon_width '] $- > icon_height = $sprite ['icon_height'] $- > icons_per_row = $sprite ['icons_per_row '] $- > target_directory = $sprite ['target_directory'] $- > target_name = $sprite ['target_name '] $- > sti = $sprite ['path'] $- > icon_type = $sprite ['icon_type '] $- > icon_total = $sprite ['icon_total'] $- > icon_name = $sprite ['icon_name '] og $- > x_offset = $sprite ['x_offset'] $- > y_offset = $sprite ['y_offset ']}}, sprite image er nu klar til at gå.vores næste skridt er at begynde iterating gennem vores icon_name 'system.som vi iterate gennem det system, vi gør følgende:, afhængig af den type, der er specificeret i vores image sprite bygmester form, vil vi skabe et nyt image for hver ikon, ved hjælp af en af følgende kommandoer, imagecreatefrompng, imagecreatefromgif eller imagecreatefromjpeg.vi vil concatenate "icon_name" med "icon_type ejendom for at angive de image kilde. nu ved hjælp af imagecopy kommandoen, vi kopierer det symbol på vores sprite.vi vil opveje det ved hjælp af vores x_position "og" y_position 'egenskaber, og vi sætter det dimensioner ved hjælp af vores icon_width "og" icon_height' egenskaber. under tilsat ikon - at vores sprite, vil vi nu forøgelse af vores icon_per_row_count ved 1, vi bliver nødt til at afgøre, om vi har nået de "icons_per_row 'grænse, som vi, der er specificeret i sprite bygmester form.hvis vi har, vil vi gøre følgende:,, vi bliver nødt til at omberegne ikoner holdning vertikalt, så starter vi en ny række.vi vil gøre det med det nuværende "y_position", og at "icon_height" og "y_offset til det. næste, vil vi sætte" x_position tilbage til det er standardindstillingen, som er "x_offset ejendom som defineret i vores sprite bygmester form.den næste stjerne vil blive kopieret til venstre side af vores sprite. nu, så skal vi genstarte vores icon_per_row_count til 0, da der ikke er nogen billeder på det her endnu, og endelig vil vi forøgelse af vores row_count ved 1, som vi lige har afsluttet en række, hvis de icon_per_row_count "tæl ikke svarer til vores icons_per_row 'grænse, vi behøver kun at foretage en ny beregning af de x_position", således at den næste stjerne er placeret længere nede langs x - aksen, nu hvor denne "ikon" er blevet kopieret til vores sprite, vi kan ødelægge det ved hjælp af imagedestroy kommando.,, vil vi afslutte vores hver sløjfe her med gentaget gennem hele vores "ikoner og kopierede hver en over den sprite, vil vi gå videre og produktion den sprite billede til en fil.først, vil vi se billedet type igen, så bruger vi den passende metode til produktion af den sprite.vi vil bruge den imagepng, imagegif eller imagejpeg ordre til at gøre det. med vores sprite image reddede en fil, vi kan gå videre og ødelægge gd 's image, vi arbejdede med imagedestroy kommando.,, funktion create_image() {$- > x_position = $- > x_offset og $- > y_position = $- > y_offset. $- > icon_per_row_count = 0 $- > sprite_width = (($- > icon_width + $- > x_offset) * $- > icons_per_row) + $- > x_offset. $- > sprite_height = (($- > icon_height + $- > y_offset) * celle ($- > icon_total /$- > icons_per_row) + $- > y_offset. $denne - > new_sprite = imagecreatetruecolor($this->sprite_width, $this->sprite_height); imagesavealpha($this->new_sprite, true); $this->new_sprite_opacity= imagecolorallocatealpha($this->new_sprite, 0, 0, 0, 127); imagefill($this->new_sprite, 0, 0, $this->new_sprite_opacity); foreach ($this->icon_name as $image) { if($this->icon_type == 'png') { $this->icon = imagecreatefrompng("{$this->icon_source}{$image}.{$this->icon_type}"); } else if($this->icon_type == 'gif') { $this->icon = imagecreatefromgif("{$this->icon_source}{$image}.{$this->icon_type}"); } else if($this->icon_type == 'jpg'



Previous:
Next Page: