Die GD-Bildressource von BMP kann nicht mit MIME-Typ 'Image/X-MS-BMP' in PHP erstellt werden

StackOverflow https://stackoverflow.com/questions/2100875

  •  21-09-2019
  •  | 
  •  

Frage

Ich versuche, eine GD -Image -Ressource aus einem BMP -Bild zu erstellen, aber ich habe kein Glück.

Das fragliche BMP -Bild wurde erstellt und mit Photoshop gespeichert. Ich habe ein paar BMPs ausprobiert, die ich auch im Web gefunden habe, und sie haben die gleichen Ergebnisse gegeben.

GetImageSize () teilt mir mit, dass das BMP-Bild einen Bildtyp von Imagetype_BMP (6) und einen MIME-Typ 'Bild/X-MS-BMP' hat.

Ich habe versucht, das Bild durch ImagecreateFromWBMP () und ImagecreateFromxbm () auszuführen, aber es erkennt es jedoch nicht. Ich habe auch versucht, es durch ImagecreateFromString () zu laufen, aber das fehlgeschlagene Sprichwort "Daten sind nicht in einem anerkannten Format".

Ich führe XAMPP auf einem Windows -Computer mit PHP 5.3.1 und GD 2.0.34 mit aktivierter WBMP- und XBM -Support aus. Ich habe dies auch auf einem Linux -Server ausprobiert, der PHP 5.2.6 und GD 2.0.34 mit WBMP- und XBM -Support aktiviert hat, das gleiche Ergebnis.

Irgendwelche Ideen, wie ich eine GD -Image -Ressource aus diesem BMP erstellen kann? Ist es eigentlich möglich?

War es hilfreich?

Lösung

Soweit ich weiß, unterstützt es keine BMP -Bilder. Das imagecreatefromwbmp() Die Methode ist für den Umgang mit WBMP -Dateien (WLAN Bitmaps) und nicht für den normalen BMP, den Sie dort haben. Das imagecreatefromxbm() ist für den Umgang mit dem XBM -Format (erneut anders als BMP).

Ich würde dies umgehen, indem ich Photoshop wiedereröffnet und als PNG oder JPG neu speichert. Angenommen, Sie haben PHP mit der entsprechenden Unterstützung installiert/zusammengestellt, können Sie mit einem oder beiden Bildformaten einwandfrei arbeiten.

Andere Tipps

Es gibt ein neues OpenSource -Projekt auf GitHub, mit dem das Lesen und Speichern von BMP -Dateien (und anderen Dateiformaten) in PHP das Lesen und Speichern ermöglicht. Es ist ziemlich einfach zu bedienen.

Das Projekt heißt PHP -Bildmagier.

Die Lösung, die Sie suchen, ist hier:http://tr.php.net/imagecreate

Scrollen Sie unten zu den Kommentaren, um die mit dem Namen benannte Funktion zu finden. "ImageCreateFrombmp". Es wird Ihnen helfen, Bilder aus den BMP -Bildern zu erstellen.

Sobald Sie das Bild erstellt haben, können Sie das verwenden ImageJpeg () Funktion zum Speichern des Bildes im JPEG -Format.

Ich erinnere mich, dass ich vor langer Zeit gelernt habe, dass GD das BMP -Format nicht unterstützt.

Hier ist Ein Link, den ich gerade gefunden habe.

Obwohl es einige Verwirrung über WBMP -Dateien gab, war es noch lange her.

Diese Zeitleiste von Comericious.com gibt an, dass es wahrscheinlich 2005 war.

Verwenden Sie Funktion:

function imagecreatefrombmp( $filename )
{
    $file = fopen( $filename, "rb" );
    $read = fread( $file, 10 );
    while( !feof( $file ) && $read != "" )
    {
        $read .= fread( $file, 1024 );
    }
    $temp = unpack( "H*", $read );
    $hex = $temp[1];
    $header = substr( $hex, 0, 104 );
    $body = str_split( substr( $hex, 108 ), 6 );
    if( substr( $header, 0, 4 ) == "424d" )
    {
        $header = substr( $header, 4 );
        // Remove some stuff?
        $header = substr( $header, 32 );
        // Get the width
        $width = hexdec( substr( $header, 0, 2 ) );
        // Remove some stuff?
        $header = substr( $header, 8 );
        // Get the height
        $height = hexdec( substr( $header, 0, 2 ) );
        unset( $header );
    }
    $x = 0;
    $y = 1;
    $image = imagecreatetruecolor( $width, $height );
    foreach( $body as $rgb )
    {
        $r = hexdec( substr( $rgb, 4, 2 ) );
        $g = hexdec( substr( $rgb, 2, 2 ) );
        $b = hexdec( substr( $rgb, 0, 2 ) );
        $color = imagecolorallocate( $image, $r, $g, $b );
        imagesetpixel( $image, $x, $height-$y, $color );
        $x++;
        if( $x >= $width )
        {
            $x = 0;
            $y++;
        }
    }
    return $image;
}

Quellehttp://php.net/manual/ru/function.imagecreatefromwbmp.php

PHP 7.2 Einführte Unterstützung für BMP in der GD -Bibliothek: ImageBmp, ImageCreateFrombmp.

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