Frage

Ich benutze imagecreatefromjpeg, imagecreatefromgif und imagecreatefrompng Funktionen Thumbnails von image/jpeg zu erstellen, image/gif und image/png mimen.

Ich möchte auch Thumbnails .BMP Dateien erstellen.

Ich habe eine Datei und fand heraus, dass seine Mime image/x-ms-bmp ist.

Allerdings kann ich keine geeignete imagecreatefrom... Funktion finden.

Bitte vor.

War es hilfreich?

Lösung

ist PHP nicht in Bildfunktionen für BMP aufgebaut hat.

Es gab ein paar Versuche, Funktionen zu erstellen, dies zu tun.

Sie können eine robuste und gut dokumentierte Version in diesem Kommentar in der PHP-Dokumentation: http://www.php.net/manual/en/function.imagecreatefromwbmp.php#86214

Hier ist die Funktion von diesem Kommentar, ohne die hervorragenden Dokumentation, die viel länger macht aber viel besser lesbar:

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;
}

Andere Tipps

Wie wäre es so etwas wie dieser Kerl beschreibt:

http://www.php.net/manual/en/ function.imagecreate.php # 53879

Es ist ein Open-Source-Projekt, PHP Bild Magier, die Sie Dateien lesen und schreiben BMP erlaubt. Siehe hier: https://stackoverflow.com/a/11531747/577306

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top