Skip to content

Instantly share code, notes, and snippets.

@ijmorgado
Created March 2, 2013 22:38
Show Gist options
  • Save ijmorgado/5073586 to your computer and use it in GitHub Desktop.
Save ijmorgado/5073586 to your computer and use it in GitHub Desktop.

Revisions

  1. ijmorgado created this gist Mar 2, 2013.
    44 changes: 44 additions & 0 deletions imagecreatefrombmp.php
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,44 @@
    public function ImageCreateFromBMP($p_sFile)
    { $file = fopen($p_sFile,"rb");
    $read = fread($file,10);
    while(!feof($file)&&($read<>""))
    $read .= fread($file,1024);
    $temp = unpack("H*",$read);
    $hex = $temp[1];
    $header = substr($hex,0,108);
    if (substr($header,0,4)=="424d")
    {
    $header_parts = str_split($header,2);
    $width = hexdec($header_parts[19].$header_parts[18]);
    $height = hexdec($header_parts[23].$header_parts[22]);
    unset($header_parts);
    }
    $x = 0;
    $y = 1;
    $image = imagecreatetruecolor($width,$height);
    $body = substr($hex,108);
    $body_size = (strlen($body)/2);
    $header_size = ($width*$height);
    $usePadding = ($body_size>($header_size*3)+4);
    for ($i=0;$i<$body_size;$i+=3)
    {
    if ($x>=$width)
    {
    if ($usePadding)
    $i += $width%4;
    $x = 0;
    $y++;
    if ($y>$height)
    break;
    }
    $i_pos = $i*2;
    $r = hexdec($body[$i_pos+4].$body[$i_pos+5]);
    $g = hexdec($body[$i_pos+2].$body[$i_pos+3]);
    $b = hexdec($body[$i_pos].$body[$i_pos+1]);
    $color = imagecolorallocate($image,$r,$g,$b);
    imagesetpixel($image,$x,$height-$y,$color);
    $x++;
    }
    unset($body);
    return $image;
    }