wargroundscanberra:character_sheet
This is an old revision of the document!
Character Sheets
Go back to Wargrounds Canberra |
---|
- Working Form: form
- Working Location: https://www.curufea.com/image.php
- Testing Location: https://www.curufea.com/image_test.php
<?php // Character Sheet creator for Wargrounds Canberra // To be added- some images (to be sourced) as defaults - background, factions, space fillers and icons // To be added- a player photo (part of the form input) and basic text // Version 0.3 16/7/24 - curufea@yahoo.com // Currently hosted at www.curufea.com // Path to our font file (relative to the location of this file) $font = 'blackwoodcastle.ttf'; // for field names $font_data = 'oldeenglish.ttf'; // for player data // Path to images (relative to the location of this file) $imagepath = 'data/media/wargroundscanberra/'; // Bacground image texture $imageback = $imagepath.'another-rough-old-and-worn-parchment-paper.jpg'; $im2 = imagecreatefromjpeg("$imageback"); //defaults - to be overwritten by form inputs $fontsize = 20; $linespacing = round($fontsize*2); $width = 530; // pixel size x of image $height = 754; // size y of image // array of default field names $names = array( "Player Name:", "Character's Name:", "Titles/Nicknames:", "Race/Species:", "Hair Colour:", "Eye Colour:", "Skin Colour:", "Class & Tier:", "School of Magic:", "Faction:", "Warband:", "Marx:"); $factions_images = array( "clans.jpg", "empire.jpg", "greyscales.jpg", "horde.jpg", "wardens.jpg"); $factions_titles = array( "The Clans", "The Empire", "Greyscales", "The Horde", "The Wardens"); // test data - note will need some error checking in future, probably warnings where field data is too long to fit $player_data = array ( "Peter", "Cousin Curufea", "", "Human (?)","Natural","Natural","Natural","Mage (Tier 3)","Divine Caster","3","Bone Hearts","0" ); // count number of field names $numnames = count($names)-1; // Create image $image = imagecreatetruecolor($width,$height); // pick color for the text $fontcolor = imagecolorallocate($image, 0, 0, 0); // add background texture imagecopyresized($image, $im2, 0, 0, 0, 0, $width, $height,imagesx($im2), imagesy($im2)); imagedestroy($im2); // x,y coords for imagettftext defines the baseline of the text: the lower-left corner // so the x coord can stay as 0 but you have to add the font size to the y to simulate // top left boundary so we can write the text within the boundary of the image $x = $fontsize; $y = $fontsize; for ($count=0;$count<=$numnames;$count++) { $y=$y+$linespacing; // increment by estimated line separation height // Clunky bit to do positioning. I'll just generate an array next time if ($count==3||$count==7) $y=$y+$linespacing; // blank lines to separate if ($count==9) { // right column $y= $linespacing*5; $x= round($width/2); }; if ($count==$numnames) { // centre the last text in the right column $text = $names[$count] . " 999"; // add possible length $text_box = imagettfbbox($fontsize,0,$font,$text); // makes an array of co-ordinates for the text box // Get your Text Width and $text_width = $text_box[2]-$text_box[0]; $x = round(($width*2/3)-($text_width/2)); // middle of the right column minus half the size of the text $y=$y+$linespacing; }; // Field names in blackwood castle font imagettftext($image, $fontsize, 0, $x, $y, $fontcolor, $font, $names[$count]); // Player data in olde english font $text_box = imagettfbbox($fontsize,0,$font,$names[$count]); // workout where the field name ends $text_width = $text_box[2]-$text_box[0]+round($fontsize/2); $text = $player_data[$count]; // Change the selected faction to readable text (and add faction logo) if ($count==9) { $text = $factions_titles[intval($player_data[$count])]; $faction= $imagepath.$factions_images[intval($player_data[$count])]; $im3 = imagecreatefromjpeg("$faction"); imagecopyresized($image, $im3, $width-80, 120, 0, 0, 50, 50,imagesx($im3), imagesy($im3)); imagedestroy($im3); }; // Print the data imagettftext($image, $fontsize, 0, $x+$text_width, $y, $fontcolor, $font_data, $text); }; // tell the browser that the content is an image header('Content-type: image/jpeg'); // output image to the browser imagejpeg($image); // delete the image resource imagedestroy($image); ?>
To do
- A form test with default text for field names prefilled (but not as complex as the one in this link)
- Images for the various bits
- Possibly API use for wherever photos get stored (or just upload them) - may need to edit photos to fit
- Variable sheet size - just scale everything to whatever is needed.
wargroundscanberra/character_sheet.1721351185.txt.gz · Last modified: 2024/07/18 18:06 by curufea