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 — Crée une nouvelle image à partir d'un fichier ou d'une URL
Description
imagecreatefromwbmp() retourne une ressource d'image PHP, représentant l'image filename .
imagecreatefromwbmp() retourne une chaîne vide en cas d'erreur. Il retourne aussi un message d'erreur qui s'affiche comme un lien mort dans un navigateur. Pour aider au déboguage, l'exemple suivant va produire une erreur WBMP :
Exemple #1 Exemple de gestion des erreurs durant la création d'une image
<?php
function LoadWBMP($imgname) {
$im = @imagecreatefromwbmp($imgname); /* Tentative d'ouverture */
if (!$im) { /* Vérification que cela s'est bien passé */
$im = imagecreatetruecolor (20, 20); /* Crée une image blanche */
$bgc = imagecolorallocate($im, 255, 255, 255);
$tc = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 10, 10, $bgc);
/* Affiche le message d'erreur */
imagestring($im, 1, 5, 5, "Erreur de chargement de $imgname", $tc);
}
return $im;
}
?>
Vous pouvez utiliser une URL comme nom de fichier avec cette fonction, si le gestionnaire fopen a été activée. Voyez fopen() pour plus de détails sur la façon de spécifier le nom du fichier et Liste des protocoles supportés pour une liste des protocoles URL supportés.
Liste de paramètres
- filename
-
Chemin vers l'image WBMP
Valeurs de retour
Retourne un identifiant de ressource image en cas de succès, FALSE si une erreur survient.
Notes
Note: Le support WBMP n'est disponible que si PHP a été compilé avec GD-1.8 ou supérieur.
Les versions Windows de PHP antérieures à la version 4.3.0 ne supportent pas l'accès aux fichiers distants avec cette fonction, même si allow_url_fopen est activé.
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.
