1

只是想知道是否有人知道如何将 bmp 字节数组转换为实际图像?

图像提取:

424d 4284 0300 0000 0000 4200 0000 2800
0000 4001 0000 f000 0000 0100 1800 0300

这不适用于 bmp(其中 data 是表示图像的输入字符串)

$im = imagecreatefromstring($data);
  if ($im !== false) {
      header('Content-Type: image/png');
      imagepng($im);
      imagedestroy($im);
  }
  else {
      echo 'An error occurred.';
  }

谢谢!

4

1 回答 1

1

imagecreatefromstring() 或 PHP 的 GD 似乎不支持 BMP [1]

它似乎支持WBMP,而不是BMP。[2]

此外, imagecreatefromstring() 期望接收整个文件,而不仅仅是您可能拥有的任何选定像素的“提取”。如果它会接受原始像素数据(忘记颜色格式、位数等问题),您仍然需要至少为 imagecreatefromstring() 指定每行像素数,以便 GD 构成您的任何“原始数据” .

由于 BMP 的性质,其中数据是未压缩的像素数据,如果你真的需要,我想你可以 imagecreate() 一个空图像并在 for (y) { for (x) { .. . } } 循环从原始 BMP 文件的提取中设置像素数据。不知道您要做什么,我仍然打赌会有更简单的方法来做到这一点。

[1] http://php.net/manual/en/function.imagecreatefromstring.php / "imagecreatefromstring() 返回一个图像标识符,代表从给定图像中获取的图像。如果您的 PHP 构建支持,这些类型将被自动检测它们:JPEG、PNG、GIF、WBMP 和 GD2。”

[2] http://en.wikipedia.org/wiki/Wireless_Application_Protocol_Bitmap_Format

于 2013-11-12T17:13:34.560 回答