Jump to content

Arts & Writings

Sign in to follow this  

Do you have any artwork, chronicles, design showcases, photography, illustrations, or any other artistic related creations? If you do, and you wish to share them with us, then this section is for you!

45 topics in this forum

    • 4 replies
    • 3826 views
  1. Uzieal's Art Corner 1 2

    • 31 replies
    • 7145 views
    • 2 replies
    • 1904 views
    • 6 replies
    • 4097 views
    • 14 replies
    • 3015 views
    • 9 replies
    • 2750 views
    • 15 replies
    • 3816 views
    • 1 reply
    • 2014 views
    • 3 replies
    • 2281 views
    • 1 reply
    • 1297 views
    • 1 reply
    • 2191 views
    • 0 replies
    • 2335 views
    • 6 replies
    • 2352 views
  2. Hercules Userbar 1 2

    • 28 replies
    • 5411 views
    • 5 replies
    • 2197 views
    • 0 replies
    • 1282 views
    • 0 replies
    • 1037 views
    • 3 replies
    • 1473 views
    • 12 replies
    • 2001 views
  3. First Website Design 1 2

    • 37 replies
    • 7122 views
Sign in to follow this  
  • Featured Topics

  • Latest Commits

  • Topics

  • Posts

    • Original Soundtrack for OldschoolRO - Revo     🎧 Get one for your server now! 💲$40 – One full original song (with lyrics and copyright-free beat) 💲$100 – One full original song with a simple lyrics video included
    • Thank you, you helped me a lot, it worked!
    • Some time ago I adjusted the emblem display on the website, but I don't remember which file I modified. I think it was related to the imagecreatefrombmpstring function, but I could be wrong - it wasn't too difficult to fix it. Below I'm sending potential files that may have been changed, compare them with your own files. Also, pay attention to the PHP error logs - often the solution lies there.   \lib\Flux\EmblemExporter.php <?php require_once 'functions/imagecreatefrombmpstring.php'; /** * */ class Flux_EmblemExporter { /** * */ public $loginAthenaGroup; /** * */ public $athenaServers = array(); /** * */ public function __construct(Flux_LoginAthenaGroup $loginAthenaGroup) { $this->loginAthenaGroup = $loginAthenaGroup; } /** * */ public function addAthenaServer(Flux_Athena $athenaServer) { if (!in_array($athenaServer, $this->loginAthenaGroup->athenaServers, true)) { throw new Flux_Error( "{$athenaServer->serverName} is not a valid char/map server defined in the {$this->loginAthenaGroup->serverName} group."); } $this->athenaServers[$athenaServer->serverName] = $athenaServer; } /** * */ public function exportArchive() { $topDir = $this->sanitizePathName($this->loginAthenaGroup->serverName); $tmpDir = FLUX_DATA_DIR.'/tmp'; $tmpFile = tempnam($tmpDir, 'zip'); // Create zip archive. $zip = new ZipArchive(); $zip->open($tmpFile, ZIPARCHIVE::OVERWRITE); $zip->addEmptyDir($topDir); foreach ($this->athenaServers as $athenaServer) { $athenaDir = $this->sanitizePathName($athenaServer->serverName); $zip->addEmptyDir("$topDir/$athenaDir"); $sql = "SELECT name, emblem_data FROM {$athenaServer->charMapDatabase}.guild WHERE emblem_len > 0 ORDER BY name ASC"; $sth = $athenaServer->connection->getStatement($sql); $sth->execute(); $guilds = $sth->fetchAll(); if ($guilds) { foreach ($guilds as $guild) { $emblemData = @gzuncompress(pack('H*', $guild->emblem_data)); $emblemImage = imagecreatefrombmpstring($emblemData); ob_start(); imagepng($emblemImage); $data = ob_get_clean(); $emblemName = sprintf('%s.png', $this->sanitizePathName($guild->name)); $zip->addFromString("$topDir/$athenaDir/$emblemName", $data); } } } // Close archive. $zip->close(); // Send out appropriate HTTP headers. $filename = urlencode(sprintf('%s-%s-emblems.zip', strtolower($topDir), date('Ymd'))); header('Content-Type: application/zip'); header('Content-Length: '.filesize($tmpFile)); header("Content-Disposition: attachment; filename=$filename"); // Read contents of the file. readfile($tmpFile); // Remove temporary file. unlink($tmpFile); exit; } /** * */ private function sanitizePathName($pathName) { return preg_replace('/[^\w\d ]+/', '', $pathName); } } ?>   \lib\functions\imagecreatefrombmpstring.php <?php /** * Convert a bmp string to Image resource * @param {string} $data - BMP string content * @return {resource} image resource */ function imagecreatefrombmpstring($data) { // Read header extract( unpack("a2signature/x8/Voffset/x4/Vwidth/Vheight/x2/vbits", substr($data, 0, 30))); if ($signature !== 'BM') { return false; } // Create image $img = imagecreatetruecolor($width, $height); imagealphablending($img, false); imagesavealpha($img, true); // Load palette (if used) $paletteSize = $offset - 54; $imagePalette = array(); if ($paletteSize > 0 && $bits < 16) { $palette = unpack('C'. $paletteSize, substr($data, 54, $paletteSize)); for ($i = 1, $p = 0; $i < $paletteSize; $i += 4, $p++ ) { $b = $palette[$i+0]; $g = $palette[$i+1]; $r = $palette[$i+2]; $a = $palette[$i+3]; // Magenta is transparent. if (($r & 0xf8 === 0xf8) && ($g === 0) && ($b & 0xf8 === 0xf8)) { $a = 127; } $imagePalette[$p] = imagecolorallocatealpha($img, $r, $g, $b, $a); } } // Read ImageData $skip = ( 4 - ( (( ($bits * $width) + 7) >> 3 ) & 3 ) ) % 4; $size = $width * $height * ($bits >> 3) + $skip * $height; $imageData = unpack('C'. $size, substr($data, $offset, $size) ); switch ($bits) { // Not an original DIB file ? default: return false; // 24 bits BMP case 24: for ($i = 1, $y = $height-1; $y > -1; $y--, $i += $skip) { for ($x = 0; $x < $width; $x++, $i+=3) { $b = $imageData[$i+0]; $g = $imageData[$i+1]; $r = $imageData[$i+2]; if ($r === 255 && $g === 0 && $b === 255) { $c = imagecolorallocatealpha($img, $r, $g, $b, 127); } else { $c = imagecolorallocate($img, $r, $g, $b); } imagesetpixel($img, $x, $y, $c ); } } break; // 8 bits BMP case 8: for ($i = 1, $y = $height-1; $y > -1; $y--, $i += $skip) { for ($x = 0; $x < $width; $x++, $i++) { imagesetpixel($img, $x, $y, $imagePalette[$imageData[$i]] ); } } break; // 4 bits BMP case 4: for ($i = 1, $y = $height-1; $y > -1; $y--, $i += $skip) { for ($x = 0; $x < $width; $x+=2, $i++) { $byte = &$imageData[$i]; imagesetpixel($img, $x+0, $y, $imagePalette[$byte >> 4 ]); imagesetpixel($img, $x+1, $y, $imagePalette[$byte & 0x0F]); } } break; // 1 bit BMP case 1: for ($i = 1, $y = $height-1; $y > -1; $y--, $i += $skip) { for ($x = 0; $x < $width; $x+=8, $i++) { $byte = &$imageData[$i]; imagesetpixel($img, $x+0, $y, $imagePalette[ !!($byte & 0x80) ]); imagesetpixel($img, $x+1, $y, $imagePalette[ !!($byte & 0x40) ]); imagesetpixel($img, $x+2, $y, $imagePalette[ !!($byte & 0x20) ]); imagesetpixel($img, $x+3, $y, $imagePalette[ !!($byte & 0x10) ]); imagesetpixel($img, $x+4, $y, $imagePalette[ !!($byte & 0x08) ]); imagesetpixel($img, $x+5, $y, $imagePalette[ !!($byte & 0x04) ]); imagesetpixel($img, $x+6, $y, $imagePalette[ !!($byte & 0x02) ]); imagesetpixel($img, $x+7, $y, $imagePalette[ !!($byte & 0x01) ]); } } break; } return $img; } ?>   \modules\guild\emblem.php <?php if (!defined('FLUX_ROOT')) exit; function flux_get_default_bmp_data() { $filename = sprintf('%s/emblem/%s', FLUX_DATA_DIR, Flux::config('MissingEmblemBMP')); if (file_exists($filename)) { return file_get_contents($filename); } } function flux_display_empty_emblem() { $data = flux_get_default_bmp_data(); header("Content-Type: image/bmp"); header('Content-Length: '.strlen($data)); echo $data; exit; } if (Flux::config('ForceEmptyEmblem')) flux_display_empty_emblem(); $serverName = $params->get('login'); $athenaServerName = $params->get('charmap'); $guildID = intval($params->get('id')); $athenaServer = Flux::getAthenaServerByName($serverName, $athenaServerName); if (!$athenaServer || $guildID < 0) flux_display_empty_emblem(); else { if ($interval=Flux::config('EmblemCacheInterval')) { $interval *= 60; $dirname = FLUX_DATA_DIR."/tmp/emblems/$serverName/$athenaServerName"; $filename = "$dirname/$guildID.png"; if (!is_dir($dirname)) if (Flux::config('RequireOwnership')) mkdir($dirname, 0700, true); else mkdir($dirname, 0777, true); elseif (file_exists($filename) && (time() - filemtime($filename)) < $interval) { header("Content-Type: image/png"); header('Content-Length: '.filesize($filename)); @readfile($filename); exit; } } $db = $athenaServer->charMapDatabase; $sql = "SELECT emblem_len, emblem_data FROM $db.guild WHERE guild_id = ? LIMIT 1"; $sth = $athenaServer->connection->getStatement($sql); $sth->execute(array($guildID)); $res = $sth->fetch(); if (!$res || !$res->emblem_len || is_null($res->emblem_data)) flux_display_empty_emblem(); else { $data = hex2bin($res->emblem_data); if ($data === false) { flux_display_empty_emblem(); exit; } $signature = substr($res->emblem_data, 0, 4); // First 2 bytes, because it's in hex $image_type = "image/png"; // Default if ($signature === "4749") { $image_type = "image/gif"; } elseif ($signature === "424D") { $image_type = "image/bmp"; require_once 'functions/imagecreatefrombmpstring.php'; $image = imagecreatefrombmpstring($data); if ($image === false) { flux_display_empty_emblem(); exit; } // Reassign $data to the PNG image data ob_start(); imagepng($image); $data = ob_get_contents(); ob_end_clean(); } elseif ($signature === "7801") { // Attempt zlib decompression $data = @gzuncompress($data); if ($data === false) { flux_display_empty_emblem(); exit; } // Here, further identification of the data type may be needed } header("Content-Type: {$image_type}"); header('Content-Length: '.strlen($data)); echo $data; exit; } } ?>  
    • Please help me fix the display of the logos.
  • Download Statistics

    • Files
      464
    • Comments
      163
    • Reviews
      240

    Latest File
    By AcidMarco

    2    0

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.