Impossible de créer ressource image GD de BMP de type MIME "image / x-ms-BMP en PHP

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

  •  21-09-2019
  •  | 
  •  

Question

Je suis en train de créer une ressource d'image GD à partir d'une image BMP, mais je ne suis pas avoir de chance.

L'image BMP en question a été créé et enregistré avec Photoshop. J'ai essayé quelques PGO j'ai trouvé sur le web aussi, et ils nous ont donné les mêmes résultats.

getimagesize () me dit BMP l'image a un type d'image de IMAGETYPE_BMP (6) et un type MIME 'image / x-ms-BMP'.

Je l'ai essayé de courir l'image par imagecreatefromwbmp () et imagecreatefromxbm (), mais ni le reconnaître. J'ai aussi essayé de courir à travers imagecreatefromstring (), mais que dire errored «données ne sont pas dans un format reconnu.

Je suis en cours d'exécution XAMPP sur une machine Windows avec PHP 5.3.1 et GD 2.0.34 avec support WBMP et XBM activé. J'ai aussi essayé cela sur un serveur Linux PHP en cours d'exécution 5.2.6 et GD 2.0.34 avec support WBMP et XBM permis, même résultat.

Toutes les idées comment je peux créer une ressource d'image GD de cette BMP? Est-il réellement possible?

Était-ce utile?

La solution

Pour autant que je sache, il ne supporte pas les images BMP. La méthode est imagecreatefromwbmp() pour traiter les bitmaps sans fil (fichiers WBMP), pas la BMP normale que vous avez là. Le imagecreatefromxbm() est pour traiter le format XBM (encore une fois, différent de BMP).

Je travaillerais contourner ce problème en Photoshop re-ouverture et re-sauver au format PNG ou JPG. En supposant que vous avez installé PHP / compilé avec le support approprié, vous serez en mesure de travailler avec un ou les deux de ces formats d'images fines.

Autres conseils

Il y a un nouveau projet opensource sur Github qui permet la lecture et l'enregistrement des fichiers BMP (et d'autres formats de fichiers) en PHP. Il est assez facile à utiliser.

Le projet est appelé image PHP Magicien .

La solution que vous cherchez est ici: http://tr.php.net/imagecreate

Faites défiler ci-dessous pour les commentaires pour trouver la fonction nommée " ImageCreateFromBMP ". Il vous aidera à créer des images à partir des images bmp.

Une fois que vous créez l'image que vous pouvez utiliser la fonction imagejpeg () pour enregistrer l'image au format jpeg.

Je me souviens d'apprendre il y a longtemps que GD ne supporte pas le format BMP.

Voici lien que je viens de découvrir.

Bien qu'il y ait une certaine confusion sur les fichiers WBMP, il y a longtemps.

Ce calendrier de délicieux .com indique qu'il a probablement été 2005.

utilisez la fonction:

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

Source http://php.net/manual/ru/function.imagecreatefromwbmp.php

PHP 7.2 support introduit pour BMP dans la bibliothèque GD: imagebmp , < a href = "http://php.net/manual/en/function.imagecreatefrombmp.php" rel = "nofollow noreferrer"> imagecreatefrombmp .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top