Copy Code code as follows:
? Php
Example:
$path = ROOT. ' upload/2009/06/03/124401282315771. ' ;
$pathAll = $path. ' BMP ';
$mi = ';
$mi = Imagecreatefrombmp ($PATHALL);
Imagejpeg ($mi, $path. ' jpg ');
The functions are as follows:
function Imagecreatefrombmp ($filename)
{
Ouverture du fichier en mode binaire
if (! $f 1 = fopen ($filename, "RB") return FALSE;
1:chargement des ent tes fichier
$FILE = Unpack ("Vfile_type/vfile_size/vreserved/vbitmap_offset", Fread ($f 1, 14));
if ($FILE [' File_type ']!= 19778) return FALSE;
2:chargement des ent tes BMP
$BMP = Unpack (' Vheader_size/vwidth/vheight/vplanes/vbits_per_pixel ').
'/vcompression/vsize_bitmap/vhoriz_resolution '.
'/vvert_resolution/vcolors_used/vcolors_important ', fread ($f 1, 40));
$BMP [' colors '] = POW (2, $BMP [' bits_per_pixel ']);
if ($BMP [' size_bitmap '] = = 0) $BMP [' size_bitmap '] = $FILE [' file_size ']-$FILE [' Bitmap_offset '];
$BMP [' bytes_per_pixel '] = $BMP [' Bits_per_pixel ']/8;
$BMP [' bytes_per_pixel2 '] = ceil ($BMP [' bytes_per_pixel ']);
$BMP [' decal '] = ($BMP [' width '] * $BMP [' bytes_per_pixel ']/4);
$BMP [' decal ']-= Floor ($BMP [' width '] * $BMP [' bytes_per_pixel ']/4);
$BMP [' decal '] = 4-(4 * $BMP [' decal ']);
if ($BMP [' decal '] = = 4) $BMP [' decal '] = 0;
3:chargement des couleurs de la palette
$PALETTE = Array ();
if ($BMP [' Colors '] < 16777216)
{
$PALETTE = Unpack (' V '. $BMP [' colors '], fread ($f 1, $BMP [' colors '] * 4));
}
4:CR ation de l ' image
$IMG = Fread ($f 1, $BMP [' Size_bitmap ']);
$VIDE = chr (0);
$res = Imagecreatetruecolor ($BMP [' width '], $BMP [' height ']);
$P = 0;
$Y = $BMP [' height ']-1;
while ($Y >= 0)
{
$X = 0;
while ($X < $BMP [' width '])
{
if ($BMP [' bits_per_pixel '] = = 24)
$COLOR = Unpack ("V", substr ($IMG, $P, 3). $VIDE);
ElseIf ($BMP [' bits_per_pixel '] = = 16)
{
$COLOR = Unpack ("n", substr ($IMG, $P, 2));
$COLOR [1] = $PALETTE [$COLOR [1] + 1];
}
ElseIf ($BMP [' bits_per_pixel '] = = 8)
{
$COLOR = Unpack ("n", $VIDE. substr ($IMG, $P, 1));
$COLOR [1] = $PALETTE [$COLOR [1] + 1];
}
ElseIf ($BMP [' bits_per_pixel '] = = 4)
{
$COLOR = Unpack ("n", $VIDE. substr ($IMG, Floor ($P), 1));
if ($P * 2)% 2 = 0) $COLOR [1] = ($COLOR [1] >> 4); else $COLOR [1] = ($COLOR [1] & 0x0f);
$COLOR [1] = $PALETTE [$COLOR [1] + 1];
}
ElseIf ($BMP [' bits_per_pixel '] = = 1)
{
$COLOR = Unpack ("n", $VIDE. substr ($IMG, Floor ($P), 1));
if ($P * 8)% 8 = 0) $COLOR [1] = $COLOR [1] >> 7;
ElseIf ($P * 8)% 8 = 1) $COLOR [1] = ($COLOR [1] & 0x40) >> 6;
ElseIf ($P * 8)% 8 = 2) $COLOR [1] = ($COLOR [1] & 0x20) >> 5;
ElseIf ($P * 8)% 8 = 3) $COLOR [1] = ($COLOR [1] & 0x10) >> 4;
ElseIf ($P * 8)% 8 = 4) $COLOR [1] = ($COLOR [1] & 0x8) >> 3;
ElseIf ($P * 8)% 8 = 5) $COLOR [1] = ($COLOR [1] & 0x4) >> 2;
ElseIf ($P * 8)% 8 = 6) $COLOR [1] = ($COLOR [1] & 0x2) >> 1;
ElseIf ($P * 8)% 8 = 7) $COLOR [1] = ($COLOR [1] & 0x1);
$COLOR [1] = $PALETTE [$COLOR [1] + 1];
}
Else
return FALSE;
Imagesetpixel ($res, $X, $Y, $COLOR [1]);
$X + +;
$P + + $BMP [' bytes_per_pixel '];
}
$Y--;
$P + + $BMP [' decal '];
}
Fermeture du fichier
Fclose ($f 1);
return $res;
}
?>