why has php not made a predefined function like imagecreatefrombmp yet? surely there's more demand for it than there is for the wbmp function
imagecreatefromwbmp
(PHP 4 >= 4.0.1, PHP 5)
imagecreatefromwbmp — Cria uma nova imagem a apratir de um arquivo ou URL
Descrição
imagecreatefromwbmp() retorna um identificador de imagem representando a imagem obtida através do nome de arquivo dado.
imagecreatefromwbmp() retorna uma string vazia em caso de falha. Também mostra uma mensagem de erro, a qual infelizmente aparece como um link quebrado no browser. Para facilitar o debug, o exemplo asseguir irá prodizir um WBMP de erro:
Exemplo #1 Exemplo de como manipular um erro durante a criação
<?php
function LoadWBMP($imgname)
{
$im = @imagecreatefromwbmp($imgname); /* Attempt to open */
if (!$im) { /* See if it failed */
$im = imagecreatetruecolor (20, 20); /* Create a blank image */
$bgc = imagecolorallocate($im, 255, 255, 255);
$tc = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 10, 10, $bgc);
/* Output an errmsg */
imagestring($im, 1, 5, 5, "Error loading $imgname", $tc);
}
return $im;
}
?>
Você pode usar uma URL como um nome de arquivo nesta função se fopen wrappers estiver habilitado. Veja fopen() para mais detalhes em como especificar o nome do arquivo e List of Supported Protocols/Wrappers para uma lista de protocolos URL suportados.
Parâmetros
- filename
-
Caminho para imagem WBMP
Valor Retornado
Retorna um resource identificador da imagem em sucesso, FALSE em erros.
Notas
Nota: O suporte a WBMP esta disponível apenas se o PHP for compilado com GD-1.8 ou posterior.
A versões Windows do PHP anteriores ao PHP 4.3.0 não suportam acesso a arquivos remotos através desta função, mesmo se allow_url_fopen estiver ativado.
imagecreatefromwbmp
14-Aug-2008 01:07
11-May-2008 11:54
.bmp is just hex encoded RGB values.
All you need to do is open in binary mode and seperate the header from the body.
Decode the width and height from the header.
Then create the image pixel by pixel from the RGB values in the body.
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;
}
02-Nov-2005 02:20
for .bmp files, convert them with bmp2png, then you can use this files in gd
http://cetus.sakura.ne.jp/softlab/b2p-home/
16-Jun-2001 10:47
WBMP images are Wireless Bitmaps, not Windows Bitmaps. WBMP is used for bandwidth constrained, black and white, limited devices such as PDAs and Cell Phones.
