[PHP] Aus Code ne BMP file machen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Aeonsam, 17. Oktober 2008 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 17. Oktober 2008
    Aus Code ne BMP file machen

    Hallo Leute stehe vor einem Problem.


    Im game werden embleme erstellt diese werden in sql als blob abgelegt.
    Code:
    789CED923B54D37014C62F883CAC5A0B82C54755A44A1194AA08165188F8A01AA8D536AD25349442FA2013E7B874EDD83163D68C1D3B66EDC4C9D83163D68E19E3F72F3DC0414737FDDA2FDFBDBF7B6F4E8772FCCF7EEAE8651FD114D2DF750F0D76F84A2FD188E7D8801D69D5301C21AD1621BD1622430D910E56AF85D14790B01AA1861AC62C8C8C90A145C854899A5A884CB8A985C9AAA3D6F1AE1A87BB28E92A873B5843AF4651836951DC73B8E7A8A1B19D38781C1C09EB6A0699C10CD6A364E87124AB0FF1EE28D946949AF532B58C32F2909A0DF08E2B641A15F00AB5CD0AB9168C8F69D4C86A56C96CAAD4822DFC68DBACC2356AB7AAB04A8EA591DB56C97534ECE9D43275B25A75B25B3AE62C1BD4B61AE4DA3AF698EBD845BAB083DAAD53DB36C8B1D94E839C36B26D6086746107B56B60A789791373649BA589841DF42EEC98602D30668B1C07C9ECB2B490B063236D3A3A3AA2BF25D775FFFB1FB6A25CA09E73A28B8AA25CE5F8CFE7C47357955E3E9110C58C288A2C9932A8F8FE01BEDB9E11E3D73745717B7B0B3A665BAC113707C1B3DB1D9D70541DDE3D8ECE0583C1B7621612370718CFB2EFC2BDA7CB5F16835D8E7D495A9C995B7E32B90E907A909098D8BEB4105C7E3E134EB1CDD492B41EF92089C981D1A4F42A24E5B2D97C3EBFBB9B955E78FAFAA6F9D8D8A8204991139E4BDCF6F87C83B31B63E33121994EE5E47DA898973FDEF078AF79BDDCD078ECD9DDC9A5131E7F34FFD8EBF5AE0EF9791FF2754ECEEFEFEDED15E5B59DD53B97A637FC7E7EC4E7F3057372B12339F77DF6F295F9987F5C985B7C13B8F9ADCBA1F76B5F7382FF96905C8905A6764E79011202F7D3B2FCE9DD8F62B17CAA62310D5E2A150AA5B318837460225D2895CB0707AC3D7E96CBA502B8F0272E3C548685F4CE39A58561FC2126267FD384A2FC023CD211F3
    

    es soll nun im web das Bild dargestellt werden in 24 X 24 PNG Format.


    Ich habe hier was vorhandenes, nur blike ich da nicht durch.

    Code:
    
    session_start();
    include_once 'config.php'; // loads config variables
    include_once 'functions.php';
    
    function imagecreatefrombmpstring($im) { // Credits to [Lebref] and [Magical Tux] found in Freya forum
     $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;
     $palette_size = $offset - 54;
     $ncolor = $palette_size / 4;
     $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--) {
     $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($_SESSION[$CONFIG_name.'emblems'])) {
     $emblems = $_SESSION[$CONFIG_name.'emblems'];
     if (isset($_GET['data']) && $_GET['data'] > 0 && $emblems[$_GET['data']] != "") {
     $ebm = @gzuncompress(pack('H*', $emblems[$_GET['data']]));
     if (function_exists("gd_info")) {
     $im = imagecreatefrombmpstring($ebm);
     header('Content-Type: image/png');
     imagepng($im);
     imagedestroy($im);
     } else {
     header('Content-Type: image/bitmap');
     echo $ebm;
     }
     fim();
     }
    }
    
    if (function_exists("gd_info")) {
     $im = imagecreate (24, 24); 
     $bgc = imagecolorallocate($im, 0, 0, 0);
     imagefill($im, 0, 0, $bgc);
     header('Content-Type: image/png');
     imagepng($im);
     imagedestroy($im);
    } else {
     $in = fopen("images/no_emblema.bmp", "rb");
     $data = fread($in, 65535);
     header('Content-Type: image/bitmap');
     echo $data;
    }
    fim();
    
    ?>
    
    

    wenn jemand sowas kennt und mir helfen kann nur zu wäre su nice^^




    MFG Aeonsam
     
  2. 17. Oktober 2008
    AW: Aus Code ne BMP file machen

    Möchtest du, dass man dir die Funktionen, die du gefunden hast, auf deinen SQL Datensatz anwendet oder die Funktionen erklärt haben?
    Ich würde mir mal PHP: GD- und Image-Funktionen - Manual anschauen, da sind alle Funktionen für Bilder und zum Zeichnen erklärt. Hab selber keine Erfahrung damit, aber weil dir noch niemand geantwortet hat, dachte ich mir, wenigstens etwas ^^
     
  3. 22. Oktober 2008
    AW: Aus Code ne BMP file machen

    hmmn naja dann mal closed^^
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.