PHP không đã xây dựng trong các chức năng hình ảnh cho BMP.
Đã có một vài lần thử tạo chức năng để thực hiện việc này.
Bạn có thể tìm thấy một phiên bản mạnh mẽ và cũng ghi nhận trong nhận xét này trong tài liệu PHP: http://www.php.net/manual/en/function.imagecreatefromwbmp.php#86214
Dưới đây là chức năng từ đó bình luận mà không có tài liệu xuất sắc mà làm lâu hơn nữa nhưng nhiều hơn nữa có thể đọc được:
public function imagecreatefrombmp($p_sFile)
{
$file = fopen($p_sFile,"rb");
$read = fread($file,10);
while(!feof($file)&&($read<>""))
$read .= fread($file,1024);
$temp = unpack("H*",$read);
$hex = $temp[1];
$header = substr($hex,0,108);
if (substr($header,0,4)=="424d")
{
$header_parts = str_split($header,2);
$width = hexdec($header_parts[19].$header_parts[18]);
$height = hexdec($header_parts[23].$header_parts[22]);
unset($header_parts);
}
$x = 0;
$y = 1;
$image = imagecreatetruecolor($width,$height);
$body = substr($hex,108);
$body_size = (strlen($body)/2);
$header_size = ($width*$height);
$usePadding = ($body_size>($header_size*3)+4);
for ($i=0;$i<$body_size;$i+=3)
{
if ($x>=$width)
{
if ($usePadding)
$i += $width%4;
$x = 0;
$y++;
if ($y>$height)
break;
}
$i_pos = $i*2;
$r = hexdec($body[$i_pos+4].$body[$i_pos+5]);
$g = hexdec($body[$i_pos+2].$body[$i_pos+3]);
$b = hexdec($body[$i_pos].$body[$i_pos+1]);
$color = imagecolorallocate($image,$r,$g,$b);
imagesetpixel($image,$x,$height-$y,$color);
$x++;
}
unset($body);
return $image;
}
Nguồn
2010-10-29 04:09:02
Có, hãy xem trang manpage PHP này - có rất nhiều giải pháp được cung cấp: http://us.php.net/manual/en/function.imagecreatefromwbmp.php – leepowers
Cảm ơn rất nhiều !! –