hannicaldummy 2 Posted October 18, 2013 How to show the guild emblem on a php site? Quote Share this post Link to post Share on other sites
0 jaBote 438 Posted October 18, 2013 try something like this (save this file as emblem.php and put it on your file, remember you should edit some configs) <?php/* emblem.php v0.1 - By MagicalTux & LebrEf - Idea : LebrEf Code : MagicalTux (90%) - LebrEf (10%) Updates: evos > palette load, fread(); crashed the script > 8bits images were a pixel off to the right*/// HOW THIS WORKS: access to this file appending a guild ID. ex your/web/emblem.php?guild=<guild_ID>$host_sql = 'localhost'; // Your SQL database$user = 'root'; // Your MySQL user name$pass = 'pass'; // Your MySQL password for user$db = 'ragnarok'; // Your main Ragnarok database$mysql_game = @mysql_connect( $host_sql, $user, $pass ) or die( "Can't connect to MySQL server [1]" );@mysql_select_db( $db, $mysql_game ) or die( "Can't connect to MySQL server [2]" );function imagecreatefrombmpstring($im) { $header = unpack("vtype/Vsize/v2reserved/Voffset", substr($im,0,14)); $info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", substr($im,14,40)); extract($info); extract($header); if($type != 0x4D42) return false; // signature "BM" $palette_size = $offset - 54; $ncolor = $palette_size / 4; // $gd_header = "";// // true-color vs. palette// $gd_header .= ($palette_size == 0) ? "xFFxFE" : "xFFxFF"; // $gd_header .= pack("n2", $width, $height);// $gd_header .= ($palette_size == 0) ? "x01" : "x00";// if($palette_size) $gd_header .= pack("n", $ncolor);// // no transparency// $gd_header .= "xFFxFFxFFxFF"; $imres=imagecreatetruecolor($width,$height); imagealphablending($imres,false); imagesavealpha($imres,true); $pal=array(); if($palette_size) { $palette = substr($im, 54, $palette_size); $gd_palette = ""; $j = 0; $n=0; while($j < $palette_size) { $b = ord($palette{$j++}); $g = ord($palette{$j++}); $r = ord($palette{$j++}); $a = ord($palette{$j++}); if ( ($r==255) && ($g==0) && ($b==255)) $a=127; // alpha = 255 on 0xFF00FF $pal[$n++]=imagecolorallocatealpha($imres, $r, $g, $b, $a); } } $scan_line_size = (($bits * $width) + 7) >> 3; $scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03): 0; for($i = 0, $l = $height - 1; $i < $height; $i++, $l--) { // BMP stores scan lines starting from bottom $scan_line = substr($im, $offset + (($scan_line_size + $scan_line_align) * $l), $scan_line_size); if($bits == 24) { $j = 0; $n=0; while($j < $scan_line_size) { $b = ord($scan_line{$j++}); $g = ord($scan_line{$j++}); $r = ord($scan_line{$j++}); $a = 0; if ( ($r==255) && ($g==0) && ($b==255)) $a=127; // alpha = 255 on 0xFF00FF $col=imagecolorallocatealpha($imres, $r, $g, $b, $a); imagesetpixel($imres, $n++, $i, $col); } } else if($bits == 8) { $j=0; while($j<$scan_line_size) { $col=$pal[ord($scan_line{$j++})]; imagesetpixel($imres, $j-1, $i, $col); } } else if($bits == 4) { $j = 0; $n=0; while($j < $scan_line_size) { $byte = ord($scan_line{$j++}); $p1 = $byte >> 4; $p2 = $byte & 0x0F; imagesetpixel($imres, $n++, $i, $pal[$p1]); imagesetpixel($imres, $n++, $i, $pal[$p2]); } } else if($bits == 1) { $j = 0; $n=0; while($j < $scan_line_size) { $byte = ord($scan_line{$j++}); $p1 = (int) (($byte & 0x80) != 0); $p2 = (int) (($byte & 0x40) != 0); $p3 = (int) (($byte & 0x20) != 0); $p4 = (int) (($byte & 0x10) != 0); $p5 = (int) (($byte & 0x08) != 0); $p6 = (int) (($byte & 0x04) != 0); $p7 = (int) (($byte & 0x02) != 0); $p8 = (int) (($byte & 0x01) != 0); imagesetpixel($imres, $n++, $i, $pal[$p1]); imagesetpixel($imres, $n++, $i, $pal[$p2]); imagesetpixel($imres, $n++, $i, $pal[$p3]); imagesetpixel($imres, $n++, $i, $pal[$p4]); imagesetpixel($imres, $n++, $i, $pal[$p5]); imagesetpixel($imres, $n++, $i, $pal[$p6]); imagesetpixel($imres, $n++, $i, $pal[$p7]); imagesetpixel($imres, $n++, $i, $pal[$p8]); } } } return $imres;}if( isset( $_GET['guild'] ) && ereg( "^[0-9]+$", $_GET['guild'] ) ){ //Mysql query $query_emblem = mysql_query( "SELECT `emblem_data` FROM `guild` WHERE `guild_id` = '".$_GET['guild']."';", $mysql_game ); $nb_emblem = mysql_num_rows( $query_emblem ); $fetch_emblem = mysql_fetch_array( $query_emblem ); $ebm=$fetch_emblem['emblem_data']; //Check... Emblem exist ? if( $nb_emblem != 0 && $ebm != 0 ) { $ebm=@gzuncompress(pack('H*',$ebm)); // need to convert that to PNG with transparency $im=imagecreatefrombmpstring($ebm); header('Content-Type: image/png'); //The guild emblem imagepng($im); exit; }}// Emblem failed to load - send empty image to prevent page from appearing broken$im = imagecreate(24, 24);$background_color = imagecolorallocatealpha ($im, 255, 0, 255,127);imagecolortransparent($im, $background_color);header ('Content-type: image/png');imagepng($im);exit;?> Quote Share this post Link to post Share on other sites
0 hannicaldummy 2 Posted October 24, 2013 try something like this (save this file as emblem.php and put it on your file, remember you should edit some configs) <?php/* emblem.php v0.1 - By MagicalTux & LebrEf - Idea : LebrEf Code : MagicalTux (90%) - LebrEf (10%) Updates: evos > palette load, fread(); crashed the script > 8bits images were a pixel off to the right*/// HOW THIS WORKS: access to this file appending a guild ID. ex your/web/emblem.php?guild=<guild_ID>$host_sql = 'localhost'; // Your SQL database$user = 'root'; // Your MySQL user name$pass = 'pass'; // Your MySQL password for user$db = 'ragnarok'; // Your main Ragnarok database$mysql_game = @mysql_connect( $host_sql, $user, $pass ) or die( "Can't connect to MySQL server [1]" );@mysql_select_db( $db, $mysql_game ) or die( "Can't connect to MySQL server [2]" );function imagecreatefrombmpstring($im) { $header = unpack("vtype/Vsize/v2reserved/Voffset", substr($im,0,14)); $info = unpack("Vsize/Vwidth/Vheight/vplanes/vbits/Vcompression/Vimagesize/Vxres/Vyres/Vncolor/Vimportant", substr($im,14,40)); extract($info); extract($header); if($type != 0x4D42) return false; // signature "BM" $palette_size = $offset - 54; $ncolor = $palette_size / 4; // $gd_header = "";// // true-color vs. palette// $gd_header .= ($palette_size == 0) ? "xFFxFE" : "xFFxFF"; // $gd_header .= pack("n2", $width, $height);// $gd_header .= ($palette_size == 0) ? "x01" : "x00";// if($palette_size) $gd_header .= pack("n", $ncolor);// // no transparency// $gd_header .= "xFFxFFxFFxFF"; $imres=imagecreatetruecolor($width,$height); imagealphablending($imres,false); imagesavealpha($imres,true); $pal=array(); if($palette_size) { $palette = substr($im, 54, $palette_size); $gd_palette = ""; $j = 0; $n=0; while($j < $palette_size) { $b = ord($palette{$j++}); $g = ord($palette{$j++}); $r = ord($palette{$j++}); $a = ord($palette{$j++}); if ( ($r==255) && ($g==0) && ($b==255)) $a=127; // alpha = 255 on 0xFF00FF $pal[$n++]=imagecolorallocatealpha($imres, $r, $g, $b, $a); } } $scan_line_size = (($bits * $width) + 7) >> 3; $scan_line_align = ($scan_line_size & 0x03) ? 4 - ($scan_line_size & 0x03): 0; for($i = 0, $l = $height - 1; $i < $height; $i++, $l--) { // BMP stores scan lines starting from bottom $scan_line = substr($im, $offset + (($scan_line_size + $scan_line_align) * $l), $scan_line_size); if($bits == 24) { $j = 0; $n=0; while($j < $scan_line_size) { $b = ord($scan_line{$j++}); $g = ord($scan_line{$j++}); $r = ord($scan_line{$j++}); $a = 0; if ( ($r==255) && ($g==0) && ($b==255)) $a=127; // alpha = 255 on 0xFF00FF $col=imagecolorallocatealpha($imres, $r, $g, $b, $a); imagesetpixel($imres, $n++, $i, $col); } } else if($bits == 8) { $j=0; while($j<$scan_line_size) { $col=$pal[ord($scan_line{$j++})]; imagesetpixel($imres, $j-1, $i, $col); } } else if($bits == 4) { $j = 0; $n=0; while($j < $scan_line_size) { $byte = ord($scan_line{$j++}); $p1 = $byte >> 4; $p2 = $byte & 0x0F; imagesetpixel($imres, $n++, $i, $pal[$p1]); imagesetpixel($imres, $n++, $i, $pal[$p2]); } } else if($bits == 1) { $j = 0; $n=0; while($j < $scan_line_size) { $byte = ord($scan_line{$j++}); $p1 = (int) (($byte & 0x80) != 0); $p2 = (int) (($byte & 0x40) != 0); $p3 = (int) (($byte & 0x20) != 0); $p4 = (int) (($byte & 0x10) != 0); $p5 = (int) (($byte & 0x08) != 0); $p6 = (int) (($byte & 0x04) != 0); $p7 = (int) (($byte & 0x02) != 0); $p8 = (int) (($byte & 0x01) != 0); imagesetpixel($imres, $n++, $i, $pal[$p1]); imagesetpixel($imres, $n++, $i, $pal[$p2]); imagesetpixel($imres, $n++, $i, $pal[$p3]); imagesetpixel($imres, $n++, $i, $pal[$p4]); imagesetpixel($imres, $n++, $i, $pal[$p5]); imagesetpixel($imres, $n++, $i, $pal[$p6]); imagesetpixel($imres, $n++, $i, $pal[$p7]); imagesetpixel($imres, $n++, $i, $pal[$p8]); } } } return $imres;}if( isset( $_GET['guild'] ) && ereg( "^[0-9]+$", $_GET['guild'] ) ){ //Mysql query $query_emblem = mysql_query( "SELECT `emblem_data` FROM `guild` WHERE `guild_id` = '".$_GET['guild']."';", $mysql_game ); $nb_emblem = mysql_num_rows( $query_emblem ); $fetch_emblem = mysql_fetch_array( $query_emblem ); $ebm=$fetch_emblem['emblem_data']; //Check... Emblem exist ? if( $nb_emblem != 0 && $ebm != 0 ) { $ebm=@gzuncompress(pack('H*',$ebm)); // need to convert that to PNG with transparency $im=imagecreatefrombmpstring($ebm); header('Content-Type: image/png'); //The guild emblem imagepng($im); exit; }}// Emblem failed to load - send empty image to prevent page from appearing broken$im = imagecreate(24, 24);$background_color = imagecolorallocatealpha ($im, 255, 0, 255,127);imagecolortransparent($im, $background_color);header ('Content-type: image/png');imagepng($im);exit;?> it doens't show the emblem, with the new emulators, [bLOB - 2.1 KB] is what appears on emblem_data, not anymore a lot of letters Quote Share this post Link to post Share on other sites
0 AnGeal 0 Posted April 11, 2014 Hi did you find what was wrong with it because i'm looking as well for it? Or if anyone know as well Quote Share this post Link to post Share on other sites
How to show the guild emblem on a php site?
Share this post
Link to post
Share on other sites