BMP字节数组到BMP图像php

时间:2013-11-12 17:04:13

标签: php image bmp

只是想知道是否有人知道如何将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.';
  }

谢谢!

1 个答案:

答案 0 :(得分:1)

对于这个问题,imagecreatefromstring()或PHP的GD似乎不支持BMP [1]

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

此外,imagecreatefromstring()期望接收整个文件,而不仅仅是"提取物"你可能拥有的任何像素。如果它接受原始像素数据(忘记诸如颜色格式,位数等问题),你仍然需要至少指定每行的像素 - 对于GD的imagecreatefromstring(),以构成你的"原始数据"。

由于BMP的性质,数据是未压缩的像素数据,如果你真的需要,我想你可以imagecreate()一个空图像并在for(y){for(x)中使用imagesetpixel() {...}}循环以从原始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