No se puede crear recurso de imagen GD de BMP con el tipo MIME 'image / x-ms-bmp' en PHP

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

  •  21-09-2019
  •  | 
  •  

Pregunta

Estoy intentando crear un recurso de imagen GD una imagen BMP desde, sin embargo estoy teniendo ninguna suerte.

La imagen BMP en cuestión fue creado y guardado con Photoshop. He intentado un par de BMP he encontrado en la web también, y dieron los mismos resultados.

getimagesize () me dice que la imagen BMP tiene un tipo de imagen de IMAGETYPE_BMP (6) y un tipo MIME 'image / x-ms-bmp'.

He intentado correr la imagen a través imagecreatefromwbmp () y imagecreatefromxbm (), pero tampoco reconocerlo. También he probado la ejecución a través imagecreatefromstring (), pero que con error diciendo 'Los datos no está en un formato reconocido'.

Estoy corriendo XAMPP en una máquina Windows con PHP 5.3.1 y 2.0.34 GD con WBMP y apoyo XBM habilitado. También he intentado esto en un servidor Linux corriendo PHP 5.2.6 y 2.0.34 GD con WBMP y apoyo XBM activado, mismo resultado.

¿Alguna idea de cómo puedo crear un recurso de imagen GD de esta BMP? ¿Es realmente posible?

¿Fue útil?

Solución

Por lo que yo sé, no es compatible con imágenes BMP. El método imagecreatefromwbmp() es para hacer frente a los mapas de bits inalámbricas archivos (WBMP), no el BMP normal, que tiene allí. El imagecreatefromxbm() es para tratar con el formato XBM (de nuevo, diferente a BMP).

Me evitar esto mediante la reapertura de Photoshop y volver a guardar como PNG o JPG. Asumiendo que tiene instalado PHP / compilado con el apoyo adecuado, podrás trabajar con uno o ambos de los formatos de imagen fina.

Otros consejos

Hay un nuevo proyecto de código abierto en Github que permite la lectura y el ahorro de los archivos BMP (y otros formatos de archivo en PHP). Es bastante fácil de usar.

El proyecto se llama PHP imagen Mago .

La solución que buscas está aquí: http://tr.php.net/imagecreate

Vaya a continuación a los comentarios para encontrar la función denominada " ImageCreateFromBMP ". Se le ayudará a crear imágenes a partir de las imágenes BMP.

Una vez creada la imagen se puede utilizar el imagejpeg () función para guardar la imagen en formato JPEG.

Me parece recordar el aprendizaje hace mucho tiempo que GD no admite el formato BMP.

Aquí es un enlace que acabo de encontrar.

A pesar de que hubo cierta confusión acerca de los archivos WBMP, fue hace mucho tiempo.

Este línea de tiempo de Delicious .com indica que probablemente era de 2005.

Función de uso:

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

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

PHP 7.2 introdujo soporte para BMP en la biblioteca GD: imagebmp , < a href = "http://php.net/manual/en/function.imagecreatefrombmp.php" rel = "noreferrer nofollow"> imagecreatefrombmp .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top